1. 程式人生 > >關於隨機數 遇到的一些問題和解決辦法

關於隨機數 遇到的一些問題和解決辦法

我在用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];
       }
    }

 

然後 就解決了 是不是很開心!!!!!