我编写了一个生成随机数的函数,我将此函数称为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来说非常有用......
答案 0 :(得分:6)
在程序运行期间多次调用srand
很少有用;特别是,在每次调用srand
之前不要尝试拨打rand
,以尝试获取“真正随机”的号码。
从您的函数中删除srand(time(NULL));
并将其置于程序启动时,以便仅调用一次。