隨機數的故事

2021-06-16 12:38:00 字數 1070 閱讀 7245

rand() 和srand()的故事:

函式一:int rand(void);

從srand (seed)中指定的seed開始,返回乙個[seed,

rand_max(0x7fff)]間的隨機整數。

函式二:void srand(unsigned seed);

引數seed是rand()的種子,用來初始化rand()的起始值。

系統在呼叫rand()之前都會自動呼叫srand(),如果使用者在rand()之前曾呼叫過srand()給引數seed指定了乙個值,那麼 rand()就會將seed的值作為產生

偽隨機數的初始值;而如果使用者在rand()前沒有呼叫過srand(),那麼系統預設將1作為偽隨機數的初始 值。如果給了乙個定值,那麼每次rand()產生的隨機數序列都是一樣的~~

所以為了避免上述情況的發生我們通常用srand((unsigned)time(0))或者srand((unsigned)time(null))來 產生種子。如果仍然覺得時間間隔太小,可以在(unsigned)time(0)或者(unsigned)time(null)後面乘上某個合適的整數。 例如,srand((unsigned)time(null)*10)

oc裡面的生成隨機數函式的故事

1、隨機數的使用

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函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。srand unsigned seed 通過引數seed改變系統提供的種子值,從而可以使得每次呼...

隨機數生成 偽隨機數和真隨機數

c語言隨機數的生成,很隨機,又不隨機,比如像下面的程式 c語言生成隨機數的函式在stdlib.h庫中 include includeint main return 0 上面的 經過執行生成了 41 18467 6334 26500但是無論執行多好遍結果都是一樣的,隨機數並不隨機。這是因為rand 函...

隨機數 科普 真隨機數和偽隨機數

位元幣使用者很喜歡討論 非對稱加密 橢圓曲線 量子計算機 這類高深莫測的話題,然後再以一種非常莫名其妙的方式把幣弄丟,比如說 隨機 隨機很重要,對於位元幣這種密碼學電子貨幣來說,尤其重要。可惜社群內對於隨機的討論並不多,導致很多人缺乏正確的認識,因此,我們今天就和大家聊聊隨機。說到隨機,有兩個必須要...