我有一个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
从您发布的代码中,我得出结论,问题是由于一个错误。 –