我被要求不要使用
如何修改此算法,以便仅使用
rand()
,因为它们不是“线程安全的”,而且每次都要使用不同的种子值。我在 GitHub 上找到了一个使用以下种子值的示例: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;
}
rand_r
是一个确定性函数,只有一个参数——seed
的值。 - Oliver Charlesworth