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'的'值。 –