-2
我想在我的ff
類中創建一個單獨的函數來生成一個隨機數並返回該數。在循環外部使用時,該功能看起來很完美。但是,當我把函數放到一個循環中時,即使我每次調用隨機函數,它仍然會生成相同的數字!我究竟做錯了什麼?隨機函數在循環內調用時返回相同的數字! C++
//return a random number
int ff::random_number() const
{
srand((unsigned)time(NULL));
return (rand() % 20 + 1); //in the range of 1 to 20
}
//creates an int list of random size and random elements
int ff::create_random_list()
{
list_length = random_number(); //the list size
list_of_numbers = new int[list_length]; //initilize the list
for (int i = 0; i < list_length; ++i)
list_of_numbers[i] = random_number(); //insert a random number
return 1;
}
- 注意:我已經檢查了被這個問題之前發佈的所有類似的問題,但沒有回答我的問題。只是要清楚。
@Sneftel這是有用的,但不公平稱它是一個確切的重複! – Bader
我假設(unisgned)時間(NULL)在循環內返回相同的值,因此您在每次循環迭代中將僞隨機數生成器設置爲相同的狀態,並且每次都會給出相同的僞隨機數(如預期的那樣) –