關於隨機數 遇到的一些問題和解決辦法
我在用Cocos2d-x的引擎開發遊戲。(當然我是一個菜鳥 剛大三)
問題一:雖然我運用了隨機數,隨機出現1~5之間的一個數,但是我發現,我無論怎麼除錯我的程式,它還是和第一次隨機出現的數字一樣,也就是不具有隨機性。
在網上一插 才發現原來計算機是偽隨機數。這些百度 第一個 就有介紹,我就不贅述了
直接上解決辦法 : 隨機數種子
//初始化隨機種子
struct timeval now;
gettimeofday(&now, NULL);
//timeval是個結構體,裡邊有倆個變數,一個是以秒為單位的,一個是以微妙為單位的
unsigned rand_seed = (unsigned)(now.tv_sec*1000 + now.tv_usec/1000); //都轉化為毫秒
srand(rand_seed);
新增上了如上的程式碼,問題果斷解決 。。。。。
但是問題來來,挖掘機技術那家強。。。。
問題二:我要隨機0~4 結果是; 004032210023.。。。。
如果我像一個隨機數只出現一遍怎麼辦? 例如 04321 42130 14230 等等
for (int i = 0; i < 5; i++)//遍歷easy陣列
{
if (List[i] == 0 )
{
for (int f = 0; f <= i; f++) //檢測本陣列之前是否載入過相同的值
{
if (List[f] == Num)
{
log("重新遍歷前的Num = %d",Num);
Num = rand()%10;
f = 0; //出現相同的就重新生成,重新遍歷
log("重新遍歷,新的Num = %d",Num);
}else{continue;}
}
lList[i] = Num;
return List[i];
}
}
然後 就解決了 是不是很開心!!!!!