cocos2d x 產生隨機數 c

2021-08-27 16:37:50 字數 1723 閱讀 7628

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); //初始化時,設定下隨機種子就好了。

cocos2d x 產生隨機數 c

分享一下我老師大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!cocos2d x提供了乙個產生隨機數的方法ccrandom 0 1 具體定義如下。def ccrandom 0 1 returns a random float between 0 an...

Cocos2d x 之隨機數的產生

此篇文章主要將講隨機數產生的方法,以及各種方法的優劣 第一種 隨機效果一般,每次進入遊戲的時候,值都是一樣的 for int i 0 i 5 i 第二種 隨機效果不好,雖然每次進入遊戲,值都不一樣,但是生成的隨機數是遞增的,而且相鄰兩個數之間的變化不大 srand unsigned time nul...

cocos2d x生成隨機數

獲取系統時間 time t是long型別,精確到秒,通過time 函式可以獲得當前時間和1970年1月1日零點時間的差 time ttt time tt structtm now 獲得本地時間 now localtime tt cclog d d d d d d now tm year 1900,n...