C語言中隨機數的產生

2022-03-23 03:39:04 字數 1167 閱讀 4604

今天驗證fft演算法,需要產生一批資料,進行人為輸入有點不切實際,所以就想到使用隨機數進行產生.

c語言/c++怎樣產生隨機數:這裡要用到的是rand()函式, srand()函式,c語言/c++裡沒有自帶的random(int number)函式。

(1)  如果你只要產生隨機數而不需要設定範圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 範圍在0至rand_max 間。rand_max定義在stdlib.h, 其值為2147483647.

demo程式如下:

#include

#include

void main()

執行上面程式,控制台將產生10個隨機數,但是再次執行程式後,發現控制台產生的10個隨機數與上一次執行的結果完全一樣.

(2)如果你要隨機生成乙個在一定範圍的數,你可以在巨集定義中定義乙個random(int number)函式,然後在main()裡面直接呼叫random()函式:

如果產生0~100之間的數,程式demo如下:

#include

#include

#define random(x) (rand()%x)

void main()

上面執行結果仍然發現第二次執行的結果和第一次執行的結果還是一樣.下面就要處理這種問題.

(3)但是上面兩個例子所生成的隨機數都只能是一次性的,如果你第二次執行的時候輸出結果仍和第一次一樣。這與srand()函式有關。srand()用來設定rand()產生隨機數時的隨機數種子。在呼叫rand()函式產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在呼叫時會自動設隨機數種子為1。上面的兩個例子就是因為沒有設定隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。

srand()函式定義 : void srand (unsigned int seed);

通常可以利用geypid()或time(0)的返回值來當做seed

如果你用time(0)的話,要加入標頭檔案#include

修改demo 02的程式如下

#include

#include

#include

#define random(x) (rand()%x)

void main()

執行,控制台每次執行的結果不一致了.

C語言中隨機數的產生

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

C語言中產生隨機數

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

C語言產生隨機數

c語言產生隨機數需要呼叫stdlib.h標頭檔案中的兩個函式 int rand void 產生乙個0到rand max之間的隨機整數。rand max定義在stdlib.h,其值為2147483647 void srand int seed 用於初始化種子,便於每次產生不同的隨機數。include ...