qt裡產生隨機數

2021-07-10 06:33:28 字數 1165 閱讀 6645

本文摘自:

先說一下rand()與srand()這兩個函式的用法

所謂的「偽隨機數」指的並不是假的隨機數,這裡的「偽」是有規律的意思。其實絕對的隨機數只是一種理想狀態的隨機數,計算機只能生成相對的隨機數即偽隨機 數。計算機生成的偽隨機數既是隨機的又是有規律的 —— 一部份遵守一定的規律,一部份則不遵守任何規律。比如「世上沒有兩片形狀完全相同的樹葉」,這正點到了事物的特性 —— 規律性;但是每種樹的葉子都有近似的形狀,這正是事物的共性 —— 規律性。從這個角度講,我們就可以接受這樣的事實了:計算機只能產生偽隨機數而不是絕對的隨機數。

c++中的標準庫(包含在中)提供兩個幫助生成偽隨機數的函式:rand()和srand()。

函式一:int rand(void);

從srand(seed)中指定seed開始,返回乙個範圍介於[seed,rand_max(0x7fff))的隨機整數

函式二:void srand(unsigned seed);

引數seed是rand()的隨機種子,即用來初始化rand()的起始值。

系統在呼叫rand()之前都會自動呼叫srand(),如果使用者在rand()之前曾呼叫過srand()給引數seed指定了乙個值,那麼rand ()就會將seed的值作為產生偽隨機數的初始值;而如果使用者在rand()前沒有呼叫過srand(),那麼rand()就會自動呼叫srand (1),即系統預設將1作為偽隨機數的初始值。

由上述可得知,如果希望rand()在每次程式執行時產生的值都不一樣,必須給srand(seed)中的引數seed指定乙個變值,這個變值必須在每次 程式執行時都不一樣(比如到目前為止流逝的時間);如果我們給seed指定的是乙個定值,那麼每次程式執行的時候,rand()產生的隨機數都會一樣,只 不過這個值是[seed,rand_max(0x7fff))範圍中的乙個隨機取得的值。

舉幾個例子說明一下,假設我們要取得0~6之間的隨機數(不包括6本身):

程式一(沒有指定seed的值):

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

{ ran_num=rand()%6;

cout<

……
srand((unsigned)time(0));

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

{ ran_num=rand()%6;

cout<

qt裡產生隨機數

先說一下rand 與srand 這兩個函式的用法 所謂的 偽隨機數 指的並不是假的隨機數,這裡的 偽 是有規律的意思。其實絕對的隨機數只是一種理想狀態的隨機數,計算機只能生成相對的隨機數即偽隨機 數。計算機生成的偽隨機數既是隨機的又是有規律的 一部份遵守一定的規律,一部份則不遵守任何規律。比如 世上...

QT 隨機數產生

上 qstring strtem qstring temp int i 0 if temcur 24 temcur 0 tem temcur strtem.mid 2,5 tofloat 轉換 隨機數 i rand 100 strtem qstring number i strtem 27.strt...

產生隨機數

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