C語言 產生隨機數

2021-08-21 22:24:53 字數 1726 閱讀 9900

基本函式

在c語言中取隨機數所需要的函式是:

int rand(void);

void srand (unsigned int n);

rand()函式和srand()函式被宣告在標頭檔案stdlib.h中,所以要使用這兩個函式必須包含該標頭檔案:

#include
使用方法

rand()函式返回0到rand_max之間的偽隨機數(pseudorandom)。rand_max常量被定義在stdlib.h標頭檔案中。其值等於32767,或者更大。

srand()函式使用自變數n作為種子,用來初始化隨機數產生器。只要把相同的種子傳入srand(),然後呼叫rand()時,就會產生相同的隨機數序列。因此,我們可以把時間作為srand()函式的種子,就可以避免重複的發生。如果,呼叫rand()之前沒有先呼叫srand(),就和事先呼叫srand(1)所產生的結果一樣。

for (int i=0; i<10; i++)

每次執行都將輸出:1 7 4 0 9 4 8 8 2 4

srand(1);

for (int i=0; i<10; i++)

每次執行都將輸出:1 7 4 0 9 4 8 8 2 4

例2的輸出結果與例1是完全一樣的。

srand(8);

for (int i=0; i<10; i++)

每次執行都將輸出:4 0 1 3 5 3 7 7 1 5

該程式取得的隨機值也是在[0,10)之間,與srand(1)所取得的值不同,但是每次執行程式的結果都相同。

srand((unsigned)time(null));

for (int i=0; i<10; i++)

該程式每次執行結果都不一樣,因為每次啟動程式的時間都不同。另外需要注意的是,使用time()函式前必須包含標頭檔案time.h。

注意事項

①.求一定範圍內的隨機數。

如要取[0,10)之間的隨機整數,需將rand()的返回值與10求模。

randnumber = rand() % 10;

②.如果取的值不是從0開始呢?你只需要記住乙個通用的公式。

要取[a,b)之間的隨機整數(包括a,但不包括b),使用:

(rand() % (b - a)) + a

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

例如:隨機生成10個0~100的數:

#include

#include

#include

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

void main()

④.以上兩種方式產生的隨機數都是一次性的,如果你第二次執行的時候輸出結果仍和第一次一樣。連續產生不同的隨機數如下

例如:

#include

#include

#include

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

void main()

偽隨機浮點數。

要取得0~1之間的浮點數,可以用:

rand() / (double)(rand_max)

如果想取更大範圍的隨機浮點數,比如0~100,可以採用如下方法:

rand() /((double)(rand_max)/100)

C語言產生隨機數

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

C語言產生隨機數

c語言中可以利用rand 函式產生偽隨機數,也可以使用srand 配合rand 一起使用獲得真隨機數。int rand void void srand unsigned int n include include include int main 使用rand 函式產生0 20偽隨機數 printf...

C語言產生隨機數

1.隨機數 數學上產生的都是偽隨機數,真正的隨機數是使用物理方法產生的。2.隨機數種子 隨機數的產生是由算術規則產生的,srand seed 的隨機數種子 seed 不同,rand 的隨機數值就不同,如果每次的seed一樣,則rand 產生的隨機數也將一樣。因此 要產生隨機數,seed也必須是隨機的...