[英]Function for generate random number, not so random
我編寫了一個生成隨機數的函數, every 10 mS
調用一次此函數。
我得到的是令人驚訝的,我的數字生成是3的序列(0,3,6,9,12,...)
這是我的功能:
int utilitaireUDP::genereNombreAleatoire(int a, int b){
int nombre_aleatoire = 0; //Sert a remplir la structure
srand(time(NULL)); // initialisation de rand
nombre_aleatoire = rand()%(b-a) +a;;
return nombre_aleatoire;
}
我會忘記什么嗎? 問題是否與我的CPU有關(因為隨機數字是從內部時鍾生成的)?
編輯:謝謝大家!
我用這篇文章添加一些東西,我有這個功能:
bool utilitaireUDP::genererBooleen(){
if (genereNombreAleatoire(0,1) == 0){
return true;
}
else {
return false;
}
}
這只會使我成真,但現在我把主語放進去了……對於int來說,它是完美的……
在程序運行期間多次調用srand
很少有用; 特別是, 請勿在每次調用rand
之前嘗試調用srand
,以獲取“真正隨機的”數字。
刪除srand(time(NULL));
從您的函數並將其放置在程序啟動時,使其僅調用一次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.