開心生活站

位置:首頁 > 綜合知識 > 

srand函數怎麼用,srand函數和rand函數到底如何使用

1.srand函數和rand函數到底如何使用

在c語言裏面,兩個函數包含在頭檔案裏面,c++裏面,標準庫(被包含於中).

srand函數怎麼用 srand函數和rand函數到底如何使用

srand函數是隨機數發生器的初始化函數。

原型:void srand(unsigned seed);

rand函數用來產生隨機數,當然是僞隨機數。

原型:int rand(void)

seed的作用:srand函數的作用是根據參數seed,設定一個隨機起始點,而rand函數根據這個起始點,產生隨機數序列。默認的隨機種子爲1。如果隨機種子一樣,rand函數所產生的隨機序列也一樣。

因此,爲使每次程序執行都能產生不同的隨機序列,每次都應產生一個不同的種子參數。

2.請舉例講講vc中srand函數怎麼用

先從隨機數的原理談起.

計算機的隨機數都是由僞隨機數,即是由小M多項式序列生成.產生每個小序列都有一個初始值,即隨機種子.

srand()產生隨機種子.

rand()產生隨機數

要保證計算機產生不相同的隨機數,應保證它們的隨機種子是不一樣的.

srand( (unsigned)time( NULL ) );

就是以時間做爲隨機種子,因爲每次你執行的時間總是不一樣的.

補充一點是小M多項式序列的周期是65535,即每次利用一個隨機種子生成的隨機數的週期是65535,即你取得65535個隨機數後它們又重複出現了.

int nRand;

srand( (unsigned)time( NULL ) );

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

{

nRand=rand();

if(i==1||i==65536)

printf("%drn",nRand);

}

3.C語言srand和rand函數怎麼用

rand()函數,一般根srand()函數一起用。它們在一起,作用是:產生一個隨機數。

通常格式爲:

srand ( (unsigned) time (NULL) );

a=rand()%x; //a,x,均爲整型變量,其中,x在之前應被賦值。

srand函數裏面的unsigned也可以換成其它的。例如:int之類的數據類型,但結果也會有相應的變化。

透過rand函數產生隨機數以後,用%x來限定它的範圍。即:0<=a<x。

其原理是:用那個隨機數,去除以x,留下所得餘數,作爲最終結果。

4.srand()在C++中怎麼用

srand()

功能:初始化隨機數發生器

用法: void srand(unsigned int seed)

所在頭檔案: stdlib.h

srand()用來設定rand()產生隨機數時的隨機數種子。參數seed必須是個整數,如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。

計算機的隨機數都是由僞隨機數,即是由小M多項式序列生成的,其中產生每個小序列都有一個初始值,即隨機種子。(注意: 小M多項式序列的週期是65535,即每次利用一個隨機種子生成的隨機數的週期是65535,當你取得65535個隨機數後它們又重複出現了。)

我們知道rand()函數可以用來產生隨機數,但是這不是真正意義上的隨機數,是一個僞隨機數,是根據一個數(我們可以稱它爲種子)爲基準以某個遞推公式推算出來的一系列數,當這系列數很大的時候,就符合正態公佈,從而相當於產生了隨機數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是定了的,除非你破壞了系統。

5.C語言 srand()函數

直接用rand() 產生的一套隨機數是固定不變的。

也就是說 這次 產生了 一套 例如有 10 個數 a[0],a[1],..a[9]

下次 再跑這個程序 產生 一套 10 個數 b[0],b[1],..b[9]

得到的 b[0]==a[0]; b[1]==a[1];。.b[9]==a[9];

用 srand() 生成新種子,那麼 新的一套 和 老 的 一套 隨機數 次序就 不一樣了,數值也不完全一樣了,這樣模擬 的 僞隨機 就會 接近 真隨機。

6.srand和rand函數怎麼用,麻煩寫個簡短的c++給我看看

首先我們要對rand&srand有個總體的看法:srand初始化隨機種子,rand產生隨機數,下面將詳細說明。

rand(產生隨機數)

表頭檔案: #include

定義函數 :int rand(void)

函數說明 :

因爲rand的內部實現是用線性同餘法做的,他不是真的隨機數,只不過是因爲其週期特別長,所以有一定的範圍裏可看成是隨機的,rand()會返回一隨機數值,範圍在0至RAND_MAX 間。在調用此函數產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子爲1。rand()產生的是假隨機數字,每次執行時是相同的。若要不同,以不同的值來初始化它.初始化的函數就是srand()。

返回值:

返回0至RAND_MAX之間的隨機整數值,RAND_MAX的範圍最少是在32767之間(int),即雙字節(16位數)。若用unsigned int 雙字節是65535,四字節是4294967295的整數範圍。

0~RAND_MAX每個數字被選中的機率是相同的。

範例:

/* 產生介於1 到10 間的隨機數值,此範例未設隨機數種子,完整的隨機數產生請參考

srand()*/

#include

main()

{

int i,j;

for(i=0;i

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

函數說明:

srand()用來設定rand()產生隨機數時的隨機數種子。參數seed必須是個整數,通常可以利用geypid()或time(0)的返回值來當做seed。如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。

範例

/* 產生介於1 到10 間的隨機數值,此範例與執行結果可與rand()參照*/

#include

#include

main()

{

int i,j;

srand((int)time(0));

for(i=0;i

#include

#include

int main( void )

{

int i;

// Seed the random-number generator with current time so that

// the numbers will be different every time we run.

//

srand( (unsigned)time( NULL ) );

// Display 10 numbers.

for( i = 0; i

7.Rand函數和srand函數在keil中怎麼用,能給我舉個例子嗎

srand((unsigned)time(NULL))則使用系統定時/計數器的值作爲隨機種子。每個種子對應一組根據算法預先生成的隨機數,所以,在相同的平臺環境下,不同時間產生的隨機數會是不同的,相應的,若將srand(unsigned)time(NULL)改爲srand(TP)(TP爲任一常量),則無論何時執行、執行多少次得到的“隨機數”都會是一組固定的序列,因此srand生成的隨機數是僞隨機數。[1]

庫函數中系統提供了兩個函數用於產生隨機數:srand()和rand()。 原型爲:

函數一:int rand(void);

返回一個[0,RAND_MAX]間的隨機整數。

函數二:void srand(unsigned seed);

參數seed是rand()的種子,用來初始化rand()的起始值。

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

系統在調用rand()之前都會自動調用srand(),如果用戶在rand()之前曾調用過srand()給參數seed指定了一個值,那麼 rand()就會將seed的值作爲產生僞隨機數的初始值;而如果用戶在rand()前沒有調用過srand(),那麼系統默認將1作爲僞隨機數的初始 值。如果給了一個定值,那麼每次rand()產生的隨機數序列都是一樣的~~

所以爲了避免上述情況的發生我們通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))來 產生種子。如果仍然覺得時間間隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)後面乘上某個合適的整數。 例如,srand((unsigned)time(NULL)*10)

另外,關於time_t time(0):time_t被定義爲長整型,它返回從1970年1月1日零時零分零秒到目前爲止所經過的時間,單位爲秒。

srand()、rand()用法舉例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#include

#include

#include

voidmain()

{

inti,j;

srand((int)time(0));

for(i=0;i{

j=1+(int)(10.0*rand()/(RAND_MAX+1.0));

printf("%d",j);

}

}

標籤:rand srand 函數