关于C++程序 自建随机数 怎样做到每次运行时数值不同呀各位高手就这程序
#include "iostream.h"#include "math.h"
#define S 2
float Xn=12345;
float Rn;
struct DataType{
int temp;
int key;
};
float Rnd(int k)
{
Xn=12354*k;
Xn=(float)fmod((pow(2,16)+1)*Xn+(0.5+sqrt(3)/6)/pow(2,32),pow(2,32));
//此式是的公式Xn+1=(Lamda*Xn+Miu)%M
Rn=(float)Xn/pow(2,32);
//Rn+1=Xn/M
/*M=pow(2,32);
Lamda=pow(2,16)+1;
Miu=(0.5+sqrt(3)/6)/M;
*/
return Rn;
}
void MyRnd(int n,struct DataType *a)
{
for(int j=1;j<n;j++)
{
a[j].key=Rnd(j)*120;
//cout<<a[j].key<<endl;
}
}
void quicksort (struct DataType *a,int first,int end )
{
int i,j,temp;
i=first; j=end; temp=a[i].key; //初始化
while(i<j)
{
while (i<j && temp<= a[j].key) j--;
a[i].key =a[j].key ;
while (i<j && a[i].key<=temp) i++;
a[j].key =a[i].key ;
}
a[i].key =temp;
if (first<i-1) quicksort(a, first, i-1); //对左侧分区域进行快速排序
if (i+1<end) quicksort(a, i+1, end); //对右侧分区域进行快速排序
}//这是一个快速排序的程序
void main(){
int n;
n=300;
struct DataType a[300];
MyRnd(n,a);
//for(int k=1;k<=300;k++) cout<<a[k].key<<endl;
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
quicksort(a,1,n);
for(int k=1;k<=300;k++) cout<<a[k].key<<endl;
}
[[it] 本帖最后由 renhao126 于 2008-4-14 12:11 编辑 [/it]]