函数生成随机数,不那么随机

Function for generate random number, not so random

本文关键字:随机 随机数 函数      更新时间:2023-10-16

我写了一个生成随机数的函数,我称这个函数为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;
    }
}

这只生成了true,但是现在我把land放在main中…对于int。

在程序运行期间多次调用srand很少有用;特别是,不要在每次呼叫rand 之前尝试调用srand,以试图获得"真正随机"的数字。

从函数中删除srand(time(NULL));,并将其放在程序启动时,以便它只调用一次。