0
有人问我要不要使用rand()
因为他们不是“线程安全”,并每次也使用不同的种子值。我使用这样的种子值发现在GitHub例子:如何使用rand_r()在C中创建线程安全的随机数生成器?
unsigned int seed = time(NULL);
即仅具有由秒的精度。由于该程序在1秒内运行,我最终得到每个实例相同的随机数。
我将如何解决这个问题的算法,以便它仅使用rand_r()
或任何其他“线程安全”的方法来生成10张随机数?
int main()
{
for(int i = 0; i < 10; i++){
int random;
unsigned int seed = time(NULL);
random = 1 + (rand_r(&seed)% 10);
printf("%d\n",random);
}
return 0;
}
由于有这么多类似的问题 - 唯一的种子** **一次。 –
Huh ..odd。为什么播种多次导致数字完全相同? – btramisetty
因为'rand_r'是带一个参数确定性函数 - seed'的'值。 –