C語言中如何產生乙個隨機數及其原理

2021-10-24 10:20:37 字數 1018 閱讀 2040

在c語言中,rand()函式可以用來產生隨機數,但是這不是真真意義上的隨機數,是乙個偽隨機數,是根據乙個數,我們可以稱它為種子,為基準以某個遞推公式推算出來的一係數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是定了的,除非你破壞了系統,為了改變這個種子的值,c提供了srand()函式,它的原形是void srand( int a)。

可能大家都知道c語言中的隨機函式random,可是random函式並不是ansi c標準,所以說,random函式不能在gcc,vc等編譯器下編譯通過。

rand()會返回一隨機數值,範圍在0至rand_max 間。返回0至rand_max之間的隨機數值,rand_max定義在stdlib.h,(其值至少為32767)我運算的結果是乙個不定的數,要看你定義的變數型別,int整形的話就是32767。 在呼叫此函式產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在呼叫時會自動設隨機數種子為1。一般用for語句來設定種子的個數。具體見下面的例子。

一. 如何產生不可預見的隨機序列?

利用srand((time(null))是一種方法,因為每一次執行程式的時間是不同的。

在c語言裡所提供的隨機數發生器的用法:現在的c編譯器都提供了乙個基於ansi標準的偽隨機數發生器函式,用來生成隨機數。它們就是rand()和srand()函式。這二個函式的工作過程如下:

1) 首先給srand()提供乙個種子,它是乙個unsigned int型別,其取值範圍從0~65535;

2) 然後呼叫rand(),它會根據提供給srand()的種子值返回乙個隨機數(在0到32767之間)

3) 根據需要多次呼叫rand(),從而不間斷地得到新的隨機數;

4) 無論什麼時候,都可以給srand()提供乙個新的種子,從而進一步「隨機化」rand()的輸出結果。

舉例:在1到100隨機產生乙個整數。

#include #include #include int main()

如何產生乙個隨機數

大家可能很多次討論過隨機數在計算機中怎樣產生的問題,在這篇文章中,我會對這個問題進行更深入的 闡述我對這個問題的理解。首先需要宣告的是,計算機不會產生絕對隨機的隨機數,計算機只能產生 偽隨機數 其實絕對隨機的隨機數只是一種理想的隨機數,即使計算機怎樣發展,它也不會產生一串絕對隨機的隨機數。計算機只能...

C語言中產生隨機數

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

C語言中隨機數的產生

在c語言中,可以用srand 和time 來構成隨機數的種子 而srand 被包涵在stdlib.h的標頭檔案中,time 被包涵在time.h的標頭檔案中,例如 include include include srand unsigned time null 構成乙個種子 geuss srand ...