C語言產生隨機數的方法

2021-07-23 20:15:30 字數 2217 閱讀 1955

#include

int rand(void);

void srand(unsigned int n);

(1) rand()函式會產生0至rand_max(其值大於等於36767)之間的偽隨機數(pseudorandom);  計算機不會產生絕對隨機的隨機數,計算機只能產生「偽隨機數」。其實絕對隨機的隨機數只是一種理想的隨機數,即使計算機怎樣發展,它也不會產生一串絕對隨機的隨機數。計算機只能生成相對的隨機數,即偽隨機數。

例如:

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

編譯執行,發現每次執行程式產生的隨機數都是

一樣的; 計算機中產生隨機數,實際是採用乙個固定的數作為「種子」,在乙個給定的複雜演算法中計算結果,所以叫「

偽隨機數」。c語言中由於採用固定的序列作為"種子",所以每次執行所取的是同乙個數。

(2) 為了產生不同的隨機數列,需要srand函式來改變隨機數「種子」。 srand()函式使用自變數n作為種子,用來初始化隨機數產生器。只要把相同的種子傳入srand(),然後呼叫rand()時,就會產生相同的隨機數序列。因此,我們可以把 時間作為srand()函式的種子,就可以避免重複的發生。如果呼叫rand()之前沒有先呼叫srand(),就會導致每次執行產生的結果一樣。

例如:

srand((unsigned)time(null)); //呼叫time()函式前必須包含標頭檔案time.h

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

該程式每次執行結果都不一樣,因為每次啟動程式的時間都不同。

(3)產生一定區間內的隨機數:

(a,b)   (rand()%(b-a+1))+a-1               [a,b)   (rand()%(b-a))+a

(a,b]   (rand()%(b-a))+a+1                  [a,b]   (rand()%(b-a+1))+a

(4)產生偽隨機浮點數:

rand() / (double)(rand_max)

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

例如:

srand(time(null));

printf("%lf\n",(double)rand()/rand_max);

#include#include#includeint main() 

//使用rand()函式產生0-20偽隨機數

printf("\n\nrand()函式產生1-20的偽隨機序列 :\n");

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

//使用rand()函式產生a-b的偽隨機數a=3;b=42;(rand()%(b-a)+a)

printf("\n\nrand()函式產生3-42的偽隨機序列 :\n");

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

//關於浮點數可以使用rand_max

//用時間作為種子,獲得隨機數

printf("\n\n獲取真隨機數:\n");

srand((unsigned)time(null));

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

//採用時間作為種子是為了保證獲得不同的隨機序列

//我們會發現相同的種子可以獲得相同的隨機序列

printf("\n\n採用相同的種子獲得相同的時間序列:\n");

printf("\n序列1的值:\n");

srand(1);

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

printf("\n序列2的值:\n");

srand(1);

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

printf("\n序列3的值:\n");

c語言產生隨機數的方法

產生互不相同的六個整數數 include include include int main 產生互不相同的六個整數數 include include include int main 產生互不相同的六個整數數 include include include int main for int j 0 ...

C 語言產生隨機數的方法

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

C語言產生隨機數的方法

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