用于生成随机数的函数,不是那么随机

时间:2014-07-01 13:44:35

标签: c++ 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;
    }
}

而这只会让我产生真实,但我现在把这个srand放在我的主...而且它对于int来说非常有用......

1 个答案:

答案 0 :(得分:6)

在程序运行期间多次调用srand很少有用;特别是,在每次调用srand 之前不要尝试拨打rand,以尝试获取“真正随机”的号码。

从您的函数中删除srand(time(NULL));并将其置于程序启动时,以便仅调用一次。