產生隨機數

2021-08-19 13:59:41 字數 1588 閱讀 7195

srand()和rand()配合使用產生偽隨機數序列

srand函式是隨機數發生器的初始化函式。原型:void srand(unsigned int seed);

rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。srand(unsigned seed)通過引數seed改變系統提供的種子值,從而可以使得每次呼叫rand函式生成的偽隨機數序列不同,從而實現真正意義上的「隨機」。通常可以利用系統時間來改變系統的種子值,即srand(time(null)),可以為rand函式提供不同的種子值,進而產生不同的隨機數序列。

rand函式是產生隨機數的乙個隨機函式,有以下注意:

(1)使用該函式首先應在開頭包含標頭檔案stdlib.h

#include(c++建議使用#include,下同)

(2)在標準的c庫中函式rand()可以生成0~rand_max之間的乙個隨機數,其中rand_max 是stdlib.h 中定義的乙個整數,它與系統有關。

(3)rand()函式沒有輸入引數,直接通過表示式rand()來引用;例如可以用下面的語句來列印兩個隨機數:

printf("random numbers are: %i %i\n",rand(),rand());

(4)因為rand()函式是按指定的順序來產生整數,因此每次執行上面的語句都輸出相同的兩個值,所以說c語言的隨機並不是真正意義上的隨機,有時候也叫偽隨機數。

(5)為了使程式在每次執行時都能生成乙個新序列的隨機值,我們通常通過偽隨機數生成器提供一粒新的隨機種子。函式 srand()可以為隨機數生成器播散種子。只要種子不同rand()函式就會產生不同的隨機數序列。srand()稱為隨機數生成器的初始化器。

舉例子,隨機輸出十個0-100之間的整數:

例1,c語言,無srand

#include#includeint main(void)
例2,c語言,有srand

#include#include#includeint main(void)
例3,c++

#include#include#includeusing namespace std;

int main()

例4,c++,給出隨機數的範圍

#include#include#includeusing namespace std;

int random(int start, int end)

int main()

產生隨機數

先說明一下rand,這個函式用來產生偽隨機數。比如,產生1000的兩個隨機數,產生的兩個一般上是不同的,但如果要產生80個100以內的隨機數,僅用rand函式就不夠。因為產生80個100以內的隨機數,至少有兩個數相等的概率太大了 srand函式,並不能使產生的隨機數完全不同。你可以執行以下這串 in...

隨機數產生

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

產生隨機數

一 normrnd r normrnd mu,sigma r normrnd mu,sigma,m,n,r normrnd mu,sigma,m,n,mu sigma可以是向量或矩陣 二者同為矩陣時size要相同 但必須和r的size相同 行 列 r的size可以不指定,也可以用m,n指定 n1 n...