生成隨機數三種方式 OC

2021-07-08 19:22:12 字數 2021 閱讀 3080

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

rand()實際並不是乙個真正的偽隨機數發生器,random()會相對好點,但也不算理想。幸運的是iphone上還有其他的選擇。個人來說我首選arc4random() ,原因就是它是乙個真正的偽隨機演算法,而且範圍是rand()的兩倍。

-(

float

)randomfloatbetween

:(float

)num1 andlargerfloat

:(float

)num2

在一些產品的源**中,經常會發現有這樣的語句,

srand(unsigned(time(null)));

為什麼要這樣做呢,其實很簡單。

1.  time()函式表示返回1970-1-1 00:00:00 到當前時間的秒數,而time(null)表示獲取乙個時間,準確的說,獲取乙個指標的位址。

2.  srand()函式是產生隨機數種子的。在產生隨機數 rand()被呼叫的時候,他會檢視:如果使用者之前呼叫過 srand(seed)的話,他會重新呼叫一遍 srand(seed)以產生隨機數種子;如果發現沒有呼叫過 srand(seed)的話,會自動呼叫 srand(1)一次。所以,如果希望rand()每次呼叫產生的值都不一樣,就需要每次呼叫srand(seed)一次,而且seed不能相同。

綜合上述兩點,那就很明了了。

srand(unsigned(time(null)))表示產生隨機數種子以保證rand()呼叫的時候不會出現重複的隨機值。

2015/12/14 update

objective-c 中有個arc4random()函式用來生成隨機數且不需要種子,但是這個函式生成的隨機數範圍比較大,需要用取模的演算法對隨機值進行限制,有點麻煩。

其實 objective-c有個更方便的隨機數函式arc4random_uniform(x),可以用來產生0~(x-1)範圍內的隨機數,不需要再進行取模運算。如果要生成1~x的隨機數,可以這麼寫:

arc4random_uniform(x)+1。

生成0-x之間的隨機正整數

int 

value

=arc4random_uniform(x + 1);

生成隨機正整數

int 

value

= arc4random

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

int 

value

= arc4random

() % x; 

獲取1到x之間的整數的**如下: 

int 

value

= (arc4random() % x) + 1; 

最後如果想生成乙個浮點數,可以在專案中定義如下巨集:

#define arc4random_max      0x100000000 

然後就可以使用arc4random() 來獲取0到100之間浮點數了(精度是rand()的兩倍),**如下:

double 

val= 

floorf

(((double)arc4random() / arc4random_max) * 100.0f);

生成隨機數的三種方法

1.math類的靜態方法random double math.random 0 1 之間的double型數 2.random r new random r.nextdouble 在 0 1 之間的double型數 r.nextfloat 在 0 1 之間的float型數 r.nextint 在int...

c 隨機數生成編號 C 生成隨機數的三種方法

隨機數的定義為 產生的所有數字毫無關係.在實際應用中很多地方會用到隨機數,比如需要生成唯一的訂單號.在c 中獲取隨機數有三種方法 一.random 類 random類預設的無參建構函式可以根據當前系統時鐘為種子,進行一系列演算法得出要求範圍內的偽隨機數.這種隨機數可以達到一些要求較低的目標,但是如果...

C 生成隨機數的三種方法

隨機數的定義為 產生的所有數字毫無關係.在實際應用中很多地方會用到隨機數,比如需要生成唯一的訂單號.在c 中獲取隨機數有三種方法 一.random 類 random類預設的無參建構函式可以根據當前系統時鐘為種子,進行一系列演算法得出要求範圍內的偽隨機數.12 random rd newrandom ...