我有一個for循環,裏面我產生隨機數並用time(msecs)
播種它,但它不是隨機產生的,我該怎麼做來解決這個問題?在很短的時間間隔內產生大量的隨機數(C++)
說明: 我知道爲什麼rand()不是隨機生成它們的,我在尋求解決方案,並且我正在使用Qt創建器(如果有幫助的話)。
for(int j=0;j<5;j++){
qsrand(QDateTime::currentDateTime().time().msec());//for every j itteratio i must
for(int i=1;i<s;i++){ //have new sequence and ret is
ret.push_back(rand()%s); //vector i'm using Qt
} //s=4 for now,but s=[1;50]
qDebug()<<"new sequence ...";
}
它生成 [2,1,1],[2,1,1],[2,1,1],[2,1,1],[2,1,1];
你永遠不會從機器上獲得trully隨機性。你也應該種一次,而不是每次迭代。 –
你是什麼意思,它不會隨機生成它們?你的意思是它總是給你同樣的數字序列?你的意思是它總是給你相同的號碼?生成一個隨機數所需的時間少於幾毫秒,所以你可能在很多時間使用相同的數字播種(種子在循環之外!)。 – FuzzyBunnySlippers
從您發佈的代碼中,我得出結論,問題是由於一個錯誤。 –