我試圖產生兩個隨機數組。一個用於高度的陣列,另一個用於文本藝術魚缸的寬度。但是數組總是具有相同的重複數字。隨機編號數組給出了相同的數字
EX:2,2,2,2]或[9,9,9]
我一定要正確建立循環,但我需要幫助,看看有什麼是錯的。
//Generate random numbers for fish positions in vector
if (fish_collection.size() != 0)
{
int randHeight[fish_collection.size()];
int randWidth[fish_collection.size()];
for (int i = 0; i < fish_collection.size(); i++)
{
srand (time(NULL));
randHeight[i] = rand() % 10 + 1;
randWidth[i] = rand() % (tank_size - 5) + 1;
}
//random number printed test
for (int i = 0; i < fish_collection.size(); i++)
{
cout << randWidth[i] << ',';
}
cout << endl;
//Enter the fish in random position
for (int j = 0; j < fish_collection.size(); j++)
{
tank_frame[randHeight[j]].replace (randWidth[j], fish_collection[j].size(), fish_collection[j]);
}
}
這是正確的,或者至少如果不是完全正確,那就是效果srand具有 - 重置序列。 我不太明白爲什麼,但隨着時間的不同,以後...好...時間... – user3728501
@EdwardBird如果程序運行得相當快,標準的微秒時間可能沒有機會「勾選」。 – hexafraction
問題在於time()返回自epoch以秒爲單位的當前時間,所以很可能在相對較少的迭代次數中,每次都會得到相同的時間(因此也是相同的「隨機」種子)呼叫。 –