隨機數函式如何使用,用rand隨機函式怎麼求指定範圍的隨機數

2021-12-19 07:16:28 字數 5874 閱讀 1464

1樓:匿名使用者

srand函式是隨機數發生器的初始化函式,原型:

void srand(unsigned seed);

它需要提供乙個種子,如:

srand(1);

直接使用1來初始化種子。

不過常常使用系統時間來初始化,即使用

time函式來獲得系統時間,它的返回值為從 00:00:00 gmt, january 1, 1970

到現在所持續的秒數,然後將time_t型資料轉化為(unsigned)型在傳給srand函式,即:

srand((unsigned) time(&t));

還有乙個經常用法,不需要定義time_t型t變數,即:

srand((unsigned) time(null));

直接傳入乙個空指標,因為你的程式中往往並不需要經過引數獲得的t資料。

srand((int)getpid());

使用程式的id(getpid())來作為初始化種子,在同乙個程式中這個種子是固定的

隨機輸出十個0-100之間的整數

#include

#include

#include

void main( void ) }

用rand隨機函式怎麼求指定範圍的隨機數

2樓:a羅網天下

在excel中使用函式rand()*(最大值-最小值)+最小值即可得到5-18範圍內的隨機數了,如下圖操作所示:

1、在任一excel單元格數輸入「=rand()*(18-5)+5」;

2、輸入完成後按回車,即可得到5-18間的隨機數

3、選擇生成的隨機數,進行填充後就可以很多5-18之間的隨機數,如下圖所示:

擴充套件資料

srand((unsigned)time(null))則使用系統定時/計數器的值作為隨機種子。每個種子對應一組根據演算法預先生成的隨機數。

所以在相同的平台環境下,不同時間產生的隨機數會是不同的,相應的,若將srand(unsigned)time(null)改為srand(tp)(tp為任一常量),則無論何時執行、執行多少次得到的「隨機數」都會是一組固定的序列,因此srand生成的隨機數是偽隨機數。

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

函式一:int rand(void);

返回乙個[0,rand_max]間的隨機整數。

函式二:void srand(unsigned seed);

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

3樓:匿名使用者

最具效率的數學方法:rand()%14+5; //rand【5,18】

下面是取意範圍隨機整數的公式:

rand()%(max-min+1) +min // 隨機區間[min,max]

隨機區間[5,18]

=rand()%(18-5+1) +5

=rand()%14+5

4樓:匿名使用者

boolean flag = true;

while(flag)

5樓:匿名使用者

像你說的取5-18範圍,則rand()%13+5即可

c語言中rand()函式怎麼用?

6樓:風若遠去何人留

rand函式功能為獲取乙個偽隨機數(偽隨機數的概念下面會有介紹)。

一、函式名:

rand();

二、宣告:

int rand();

三、所在標頭檔案:

stdlib.h

四、功能:

返回乙個偽隨機數。之所以說是偽隨機數,是因為在沒有其它操作下,每次執行同乙個程式,呼叫rand得到的隨機數序列是固定的(不是真正的「隨機」)。

五、為了使rand的結果更「真」一些,也就是令其返回值更具有隨機性(不確定性),c語言在stdlib.h中還提供了srand函式,通過該函式可以設定乙個隨機數種子,一般用當前時間的毫秒數來做引數。通過time(null)可以獲取到當前時間的毫秒值(該函式位於time.

h)中。

六、使用rand的流程可以總結為:

1 呼叫srand(time(null))設定隨機數種子。

2 呼叫rand函式獲取乙個或一系列隨機數。

需要注意的是,srand只需要在所有rand呼叫前,被呼叫一次即可,沒必要呼叫多次。

七、以下是隨機獲取10個整型值並輸出的例子,輔助理解。

#include

#include

#include

int main()

7樓:

如果使用rand()函式,需要在程式開始部分增加如下預處理指令:

#include

8樓:匿名使用者

#inlcude

rand()返回乙個0~32767的整數

用之前要先呼叫srand(),才能讓每次的隨機數不一樣要#include

然後srand(time(0));

9樓:柳絮追風

加這行:#inlcude

rand()返回乙個0~32767的整數

比如m=rand(35),將從0-35中隨機取乙個值賦給m

10樓:幸巴達

好像需要包含乙個標頭檔案

11樓:匿名使用者

按樓上的做基本上就可以了。

下面是乙個簡單的例項

srand(time(0)); 的目的是使的每次產生的隨機數不同。如下:

#include "stdafx.h"

#include "time.h"

#include "stdlib.h"

#include "iostream.h"

int main(int argc, char* argv)這裡沒有呼叫 srand 函式,你兩次執行程式看一下所產生的數是不是一樣,然後將 srand(time(0))加入到 for 的上面就不一樣了。

srand(time(0));

for(int i=0;i<100;i++)cout<

return 0;

12樓:

rand(產生隨機數)

相關函式

srand

表頭檔案

#include

定義函式

int rand(void)

函式說明

rand()會返回一隨機數值,範圍在0至rand_max 間。在呼叫此函式產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在呼叫時會自動設隨機數種子為1。關於隨機數種子請參考srand()。

返回值返回0至rand_max之間的隨機數值,rand_max定義在stdlib.h,其值為2147483647。

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

srand()*/

#include

main()

}執行9 4 8 8 10 2 4 8 3 6

9 4 8 8 10 2 4 8 3 6

srand(設定隨機數種子)

相關函式

rand

表頭檔案

#include

定義函式

void srand (unsigned int seed);

函式說明

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

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

#include

#include

main()

}執行5 8 8 8 10 2 10 8 9 9

2 9 7 4 10 3 2 10 8 7

srand函式和rand函式到底如何使用??

13樓:檀香透窗櫺

rand函式

函式標頭檔案:stdlib.h

函式定義:int rand(void)

函式功能:產生乙個隨機數

函式說明:

rand函式產生的隨機數嚴格意義講不是真正的隨機數,它裡面採用了線性同餘法計算出隨機數,所謂的線性同語法簡單來說就是使用了乙個公式。

該方法有個最大週期m,也就是說該方法實在一定的範圍內生成一串數字,不過這個m一般來說比較大,所以正常使用時一般看起來就是產生了隨機的數。

不過這個函式由於預設種子是1,所以每次產生的隨機數都是相同的,也就是說每次執行程式,產生的隨機數都是一樣的,失去了部分隨機的意義,所以一般會配合srand函式使用。

返回值: 返回0至rand_max之間的隨機整數值,rand_max的範圍最小在32767之間。若用unsigned int 雙位元組是65535,四位元組是4294967295的整數範圍。

且0-rand_max每個數字被選中的機率是相同的。

srand函式

函式標頭檔案:stdlib.h

函式定義:void srand(unsigned int seed)

函式功能:設定隨機數種子

函式說明:通常可以用getpid()(獲取當前程序的程序識別碼)或者time(null)(獲取當前系統的時間資訊)來充當種子,保持每次執行時種子是不一樣的。

擴充套件資料

當srand()的內容相同時,則在rand()後產生相同的隨機數列;所以當用time(null)來進行初始隨機數,根據時間來產生隨機數,這樣就能產生不同的。

呼叫方法是srand(gettickcount()),但是又不能在每次呼叫rand()的時候都用srand(gettickcount())來初始化。

因為現在計算機執行時間比較快,當連續呼叫rand()時,系統的時間還沒有更新,所以得到的隨機種子在一段時間內是完全相同的,因此一般只在進行一次大批隨機數產生之前進行一次隨機種子的初始化。

14樓:匿名使用者

就是隨機數種子,你不改變隨機數種子,用迴圈輸出隨機數,輸出來的隨機數其實是一模一樣的,你改變他,就是改變隨機數生成的規則,就會出來不一樣的隨機數,訊息來自華夏聯盟

15樓:匿名使用者

rand()函式的功能是產生乙個隨機數,不過他是需要乙個種子才能產生,每次執行程式的時候rand()

的預設種子回事1,如果部提供乙個隨機種子的話就會每次產生的隨機數值都是一樣的;srand()

函式的功能就是給rand()函式提供公隨機種子,一般在程式開始的時候用系統時間作為隨機數種子,這樣得到的隨機數就會不一樣

16樓:du瓶邪

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

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

原型:void srand(unsigned seed);

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

原型:int rand(void)

seed的作用:srand函式的作用是根據引數seed,設定乙個隨機起始點,而rand函式根據這個起始點,產生隨機數序列。預設的隨機種子為1。

如果隨機種子一樣,rand函式所產生的隨機序列也一樣。

因此,為使每次程式執行都能產生不同的隨機序列,每次都應產生乙個不同的種子引數。

rand隨機數函式用法,如何用rand函式產生乙個隨機數?

rand 函式的返回值就是求取隨機的值,所以如果沒有對資料有要求,直接這樣寫 printf d rand 輸出乙個隨機數.但如果對數有要求,如小數或在一定值以內 小數 rand 100.0 100.0後面的.0必須寫,得到乙個小數點後有兩位小數的小數。一定範圍內的數 rand m n m是資料區間差...

如何用rand函式產生隨機數如何用rand函式產生乙個隨機數?

如果需要在數值a b之間隨即產生乙個數,如下操作 單元格中輸入函式 round rand c a 3 函式解釋 在a b區間範圍內隨即產生乙個數,小數點後保留3位!其中的 rand c a 函式解釋 以a為起點,步長為c 在a b中隨即產生乙個數。備註 c 為步長,也就是所取點的範圍長度。在這裡應該...

利用rand函式產生100以內的隨機數,然後用氣泡排序法對這數進行降序排

1 輸入 2 排序抄 3 輸出。參考 如下 include int main for i 0 i 10 i 輸出 利用隨機函式產生10個100以內的整數,並從小到大的順序排序並輸出。include using namespace std int a 10 測試陣列 duvoid print 輸出陣列...