1. 程式人生 > >cocos2d-x - 產生隨機數 c++

cocos2d-x - 產生隨機數 c++

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

cocos2d-x提供了一個產生隨機數的方法 CCRANDOM_0_1

具體定義如下。

/** @def CCRANDOM_0_1 returns a random float between 0 and 1 */
#define CCRANDOM_0_1() ((float)rand()/RAND_MAX)


可以看出,他是返回一個0~1之間的隨機數.

同樣的道理,

1. int random = CCRANDOM_0_1()+1; 產生1~2之間的隨機數

2. int random =CCRANDOM_0_1()*100; 產生0~100之間的隨機數

但是,cocos2d-x採用的是rand()函式,

rand()的用法
rand()不需要引數,它會返回一個從0到最大隨機數的任意整數,最大隨機數的大小通常是固定的一個大整數。這樣,如果你要產生0~10的10個整數,可以表達為:
  int N = rand() % 11;
這樣,N的值就是一個0~10的隨機數,如果要產生1~10,則是這樣:
  int N = 1 + rand() % 11;
總結來說,可以表示為:
  a + rand() % n
其中的a是起始值,n是整數的範圍。   a + rand() % (b-a+1) 就表示 a~b之間的一個隨機數若要0~1的小數,則可以先取得0~10的整數,然後均除以10即可得到隨機到十分位的10個隨機小數,若要得到隨機到百分位的隨機小數,則需要先得到0~100的10個整數,然後均除以100,其它情況依此類推。
通常rand()產生的隨機數在每次執行的時候都是與上一次相同的

,這是有意這樣設計的,是為了便於程式的除錯。若要產生每次不同的隨機數,可以使用srand( seed )函式進行隨機化,隨著seed的不同,就能夠產生不同的隨機數。
所以在處理的時候還可以包含time.h標頭檔案,然後使用srand(time(0))來使用當前時間使隨機數發生器隨機化,這樣就可以保證每兩次執行時可以得到不同的隨機數序列(只要兩次執行的間隔超過1秒)。


故此,總結來說CCRANDOM_0_1()不隨機,建議使用arc4random()這個函式(不需要初始化隨機種子,可直接使用)。


另外,說明下,objective-c中生成隨機數有三種方法:arc4random(),CCRANDOM_0_1()和random(),具體說明如下:
1)、arc4random() 比較精確不需要生成隨機種子
使用方法 :

通過arc4random() 獲取0到x-1之間的整數的程式碼如下:

int value = arc4random() % x;


獲取1到x之間的整數的程式碼如下:

int value = (arc4random() % x) + 1;



2)、CCRANDOM_0_1() 在cocos2d中使用 ,範圍是[0,1]

使用方法:

float random = CCRANDOM_0_1() * 5; //[0,5] CCRANDOM_0_1() 取值範圍是[0,1]



3)、random() 需要初始化時設定種子

使用方法:

srandom((unsigned int)time(time_t *)NULL); //初始化時,設定下隨機種子就好了。

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述