循环中重复的随机数

fur*_*kan 1 c++

需要为每个不同的循环生成0到1之间的随机数.

for ( 1 to 10000)调用RandomKey函数以生成不同的随机数.但问题是每次迭代我得到相同的数字.

RandomKey函数如下:

 void RandomKey ()
 {
   srand((unsigned)time(0));
   for (int k=0;k<ActivityNumber;k++)
 {

Act_num[k].Priority=(rand()%10000)*0.0001;//random number

 }


for (int i=0;i<ActivityNumber;i++)
   arr[i]=Act_num[i].Priority;
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Bli*_*ndy 6

将播种函数call(srand)移出函数调用之外(即,在程序开头,一次).

编辑:进一步思考,如果你的意思是你得到所有的0 arr(如果它说... int),那是因为rand()%10000)*0.0001返回一个介于0和0.0003之间的数字,所以如果你将它们转换为int,你将得到0.

编辑2:没关系,似乎我第一次猜对了:)

  • @Blindy:为什么`srand`的位置会影响循环的单个迭代中的值? (2认同)