C語言 怎樣產生隨機數

2021-09-02 18:48:13 字數 1166 閱讀 2108

#include

rand()函式是按指定的順序來產生整數,因此每次執行上面的語句都列印相同的兩個值,所以說c語言的隨機並不是真正意義上的隨機,有時候也叫偽隨機數,使用 rand() 生成隨機數之前需要用隨機發生器的初始化函式 srand(unsigned seed)(也位於 stdlib.h 中) 進行偽隨機數序列初始化,seed 又叫隨機種子,通俗講就是,如果每次提供的 seed 是一樣的話,最後每一輪生成的幾個隨機值也都是一樣的,因此叫偽隨機數,所以需要每次提供不同的 seed 達到完全的隨機,我們通常用時間函式 time(null) 作為 seed ,因為時間值每秒都不同,這個函式需要包含以下標頭檔案:

#include

理論太泛,下面用例子分析理解。

舉例分析

先來理解以下偽隨機數,編譯以下**:

#include

#include

#include

int main()

執行結果

8, 9, 9, 1, 7, 5, 5, 10, 1, 0,

然後無論執行多少次,結果都依然是以上隨機數,不會改變,因為每次設定的種子 seed 都是 1 。

但是假如把 seed 換成 time(null),每次就不一樣了,如下:

#include

#include

#include

int main()

結果是就變了,並且每次都不一樣:

6, 3, 4, 5, 5, 9, 8, 10, 10, 4,

6, 4, 2, 4, 3, 2, 5, 1, 2, 9,

這裡的 time(null) 的結果是乙個類似於 1524655706 的數字,並且每秒都在遞增 1,也就達成了 srand() 的 seed 不斷變化的目的,不斷生成新的隨機數。

拓展這裡注意一下例子中函式 rand() 的用法,函式括號內不需要加引數,如果直接呼叫 rand() 的話會生成下面這樣的數:

17163, 2663, 24810, 4875, 26975, 14119, 22193, 11233, 26009, 20105,

所以我們想要生成指定範圍的隨機數的話就需要使用到求餘運算子 %,這裡有個規律:例如我們需要 0–10的隨機數時,就寫成 rand()%11,0–100就寫成 rand()%101,就是運算子後的數字需要比需求範圍極值大 1,當然這也是取餘運算的原理。

C語言 C 怎樣產生隨機數

c語言 c 怎樣產生隨機數 這裡要用到的是rand 函式,srand 函式,和time 函式。需要說明的是,iostream標頭檔案中就有srand函式的定義,不需要再額外引入stdlib.h 而使用time 函式需要引入ctime標頭檔案。使用rand 函式獲取乙個隨機數 如果你只要產生隨機數而不...

怎樣產生隨機數

問 怎樣產生隨機數?答 在計算機中並沒有乙個真正的隨機數發生器,但是可以做到使產生的數字重複率很低,這樣看起來好象是真正的隨機數,實現這一功能的程式叫偽隨機數發生器。有關如何產生隨機數的理論有許多,如果要詳細地討論,需要厚厚的一本書的篇幅。不管用什麼方法實現隨機數發生器,都必須給它提供乙個名為 種子...

C語言 C 中怎樣產生隨機數

c語言 c 中怎樣產生隨機數 c語言 c 怎樣產生隨機數 這裡要用到的是rand 函式,srand 函式,c語言 c 裡沒有自帶的random int number 函式。1 如果你只要產生隨機數而不需要設定範圍的話,你只要用rand 就可以了 rand 會返回一隨機數值,範圍在0至rand max...