神奇的隨機數rand()

2022-01-25 06:14:28 字數 1106 閱讀 6764

隨機數在統計理論中占有很重要的地位,很多應用都需要用到他,系統自帶的rand()函式產生的是偽隨機數,所以該如何真正的隨機數呢?

1、c語言中的時間函式

關於c語言我查到的兩個比較好的博文是:

裡面寫的很是詳細,但是我想通過乙個例子來說明感覺比較好。常用的也就這幾個。

char a[100

]; time_t now;

time(&now); //

或者 now = time(null);

printf("

%s",ctime(&now));//

time();這個函式其實儲存的是乙個歷史時間,所以需要用null把這個歷史時間清空一下,time()就會自動儲存當前時間了。你可以簡單的理解為null就是給time()初始化。

然後利用ctime()函式輸出固定格式的時間字串。

2、隨機數

c語言自帶是隨機數是能夠產生隨機數,但是你每次呼叫後產生的隨機數都是一樣的一套隨機數。這樣就不行了。就像這樣:

int i;

for(i = 0;i<5;i++)

你只要使用上面這個程式,就會得到下面這樣的隨機數:41,18467,6334,26500,19169,沒有例外。

為了解決這個問題,時間函式就來了,時間能揭開一切虛假的東西。

只要在程式的開頭加上srand(time(null));

srand函式是隨機數發生器的初始化函式。這句話就是把當前時間當成隨機數種子。

這樣,隨機數的種子就被賦值成當前time函式執行的時候的系統時間了,保證了隨機性。

還有乙個經典的例子:

1

//產生100個0-1之間的隨機數

2srand(time(null));//產生時間種子

3int

i,rand_int ;

4float

rand_float;

5for(i = 0;i<100;i++)

6

由隨機數rand5實現隨機數rand7

rand7表示生成隨機數1,2,3,4,5,6,7 要通過rand5構造rand7現在可能沒有什麼思路,我們先試著用rand7生成rand5 rand7生成rand5很簡單,把6和7排除掉就是rand5了,也就是當隨機到大於5的時候,就再隨機一次,直到小於等於5 寫起來很容易 public stat...

rand生成偽隨機數

void srand unsigned seed 設定隨機數種子。int rand void 根據設定的種子計算生成一組整型偽隨機數序列。若沒有手動設定seed,這個函式會自動設定seed為1,即手動呼叫srand 1 與不呼叫srand產生的效果一樣。每次呼叫rand時,會依次將隨機數從隨機數序列...

PHP生成隨機數 rand

php 4,php 5 rand 產生乙個隨機整數 intrand void intrand int min,int max 如果沒有提供可選引數min和max,rand 返回 0 到 getrandmax 之間的偽隨機整數。例如想要 5 到 15 包括 5 和 15 之間的隨機數,用 rand 5...