所以我试图用随机整数填充数组。
for (int i = 0; i < 2; i++){
srand(time(NULL));
array[i]=rand()%30; }`
到目前为止,这是我的代码。我目前两次获得相同的随机数。想知道是否有解决办法吗?
答案 0 :(得分:2)
您在循环中多次植入PRNG。只能做一次。
通过在循环中调用srand
,可以重置种子。而且,如果您将相同的值传递给srand
,则对rand
的下一次调用将生成完全相同的值。
答案 1 :(得分:1)
rand()
通常使用PRNG,该PRNG使用种子生成随机数。 srand ( time(NULL) );
用于为伪随机数生成器提供种子。
当前,time()
的时间粒度为1秒,因此,如果您在粒度周期内多次用相同的值[{time(NULL);
]播种PNRG,则将调用rand()
产生相同的随机数。
将srand(time(NULL)
移到循环之外。