簡體   English   中英

用於生成隨機數的函數,而不是隨機的

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM