91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在cocos2d-x中實現真隨機數

發布時間:2020-05-27 12:28:20 來源:網絡 閱讀:1914 作者:嗚拉呆 欄目:游戲開發

今天在項目中用到了隨機數,但發現cocos2d-x中宏CCRANDOM_0_1提供的都是非常有規律的隨機數,后來上網查資料的值,產生隨機數的函數rand需要一個“種子”,默認情況下,該種子的值是不變的,因此每次程序運行,我們都會看到,它所產生的一組隨機數都是和上次的一樣的,那么為了能夠產生真隨機數,我們就必須來動態的修改該種子的值,該過程可通過srand(unsigned int speed)函數實現,具體實現過程如下:

這里直接把它寫成一個函數方便調用

static float myRand_0_1()

{

   cc_timeval psv;  

   CCTime::gettimeofdayCocos2d( &psv, NULL );    // 獲取本地時間

   //根據時間產生隨機種子

   //(這里加上一個rand函數,可解決在循環內(時間間隔極短)取隨機數時,

   //連續取得的幾個值相同的問題)

   unsigned int tsrans = psv.tv_sec * 1000 + psv.tv_usec / 1000 + rand();

   srand(tsrans);    //設定隨機數種子

   return CCRANDOM_0_1();

}


這里補充一點:

c語言里函數rand()和srand()的用法:

rand(void)用于產生一個偽隨機unsigned int 整數。
srand(seed)用于給rand()函數設定種子。


srand 和 rand 應該組和使用。一般來說,srand 是對 rand 進行設置。比如:
srand((UINT)GetCurrentTime());
int x = rand() % 100;
是生成 0 到 100 之間的隨機數。


srand()是用來初始化隨機種子數的,因為rand的內部實現是用線性同余法做的,他不是真

的隨機數,只不過是因為其周期特別長,所以有一定的范圍里可看成是隨機的,式子如下:
rand = rand*const_1 + c_var;



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

名山县| 铜鼓县| 巴彦县| 楚雄市| 太和县| 东安县| 普定县| 长垣县| 湘潭县| 建宁县| 安化县| 茌平县| 安乡县| 余干县| 大宁县| 台北县| 岳阳市| 明水县| 思南县| 罗甸县| 瑞安市| 龙陵县| 陇西县| 柞水县| 长顺县| 顺义区| 伊金霍洛旗| 博湖县| 呼玛县| 宝应县| 兖州市| 油尖旺区| 明光市| 襄城县| 景东| 天津市| 读书| 崇礼县| 泽库县| 贞丰县| 永城市|