0
我一直在嘗試爲動態分配的實例數組生成一個隨機數,但每次嘗試時,每個實例總是會得到完全相同的值:隨機數發生器返回相同的值(C++)
//IN MAIN
Enemy* enemy;
int num;
std::cout << "How many enemies would you like there to be?" << std::endl;
std::cin >> num;
enemy = new Enemy[num];
for (int q = 0; q < num; q++)
{
enemy[q].setAngle();
}
for (int q = 0; q < num; q++)
{
std::cout << enemy[q].getAngle() << std::endl;
}
//IN THE ENEMY CLASS
void Enemy::setAngle()
{
srand(time(NULL));
angle = rand() % 360 + 1;
}
int Enemy::getAngle()
{
return angle;
}
輸出將始終爲1到360之間的數字,但當調用getAngle()時,輸出只是在多行上重複的相同數字。這是爲什麼發生?我做錯了什麼,我該如何解決?
在此先感謝
嘗試在每次獲得隨機數時不重新初始化種子。如果您在少量時間內多次初始化種子,您可能會得到相同的種子,然後使用相同的數字 – Manu343726
我認爲「時間」的分辨率爲1秒,所以您可能每次使用相同的值進行初始化調用該函數(參見上面的註釋)。 – kazemakase