c中關於隨機數rand和,C中關於隨機數rand和srand

2021-03-03 21:53:13 字數 3384 閱讀 5013

1樓:匿名使用者

先看看下面的一段關於rand() 與srand()的講解:

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

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

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

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

3.為了使程式在每次執行時都能生成一個新序列的隨機值,我們通常通過為隨機數生成器提供一粒新的隨機種子。函式 srand()(來自stdlib.

h)可以為隨機數生成器播散種子。只要種子不同rand()函式就會產生不同的隨機數序列。srand()稱為隨機數生成器的初始化器。

所以說在你的第一個例子中那個seed是沒產生作用的。

第二個例子才是一般隨機數生成的使用方法。

誰能結實一下c語言中隨機srand和rand函式的區別

2樓:

rand()產生一個0~32767之間的偽隨機

數。而srand(unsigned t)是為rand()產生偽隨機數

下一個「回種子」。答所謂「種子」就是給偽隨機發生器賦一個初值,因為如果初值一樣,後面產生的偽隨機數的規律也就一樣,達不到「隨機」的目的。所以srand(unsigned t)一般是用機中的實時時間來啟動的,因為實時時間的值每時每刻都在變化,這樣啟動的rand()函式產生的偽隨機數序列就能達到以假亂真的效果。

3樓:匿名使用者

樓上說的比較完善了,我再補充一下。

連續執行若干個rand(),其返回值是同一個隨機數。必須通過srand之後才能產生新的隨機數。

c++問題 rand() 預設產生的隨機數範圍

4樓:匿名使用者

隨機數bai產生的範圍是:0-0x7fff(也就du是0到32767)

#include

#include

#include

#include

using namespace std;

void main()

{ srand( (unsigned)time( null ) ); //時間參zhi數作為種子

for(int i=0;i<32767;i++){ cout<

時間引數種dao子唯一,版然後取的數目不大於權32767個,基本能夠保證產生的隨機數唯一

5樓:匿名使用者

rand()函式可以用來產生隨機數;

rand()會返回一隨機數值,範圍在0至版rand_max 間。返回0至rand_max之間的權隨機數值,rand_max定義在stdlib.h,(其值至少為32767),運算的結果是一個不定的數,要看你定義的變數型別,int整形的話就是32767。

在呼叫此函式產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在呼叫時會自動設隨機數種子為1。一般用for語句來設定種子的個數。

6樓:二十年

0到rand_max,rand_max的值視編譯bai器而定du一般不小於32767,你可以zhi測試dao一下。可以用當前時間做專隨機數的種子保證產生的值不屬同。在程式開始之前呼叫srand((unsigned)time(null));就行了。

c語言如何srand和rand函式產生10個1-100內的隨機數

7樓:幻翼高達

需要準備的材料分別有:電腦、c語言

編譯器。

1、首先,開啟c語言編譯器,新建一個初回始.cpp檔案,例如答:test.cpp。

2、在test.cpp檔案中,輸入c語言**:

for (int i = 0; i < 10; i++)printf("%d ", rand() % 100 +1);

3、編譯器執行test.cpp檔案,此時成功通過rand產生了10個1-100內的整數。

8樓:匿名使用者

先用抄srand函式設定一個

種子,一般為襲當前時間,然後使用bairand函式產生隨機du數zhi

,如產生a~b的隨機數使用表示式rand()%(b-a+1)+a。

注意dao:srand函式在標頭檔案#include 中。

示例**:

#include

#include

#include

int main()

//列印生成的隨機數

for (i = 0; i < 10; ++i)printf ("\n");

return 0;}

9樓:匿名使用者

這就是關於程式設計的一些內容,現在呢科技發達了沒有,今後這個如果不會變成的話,可能連工作都找不到。

10樓:匿名使用者

#include

#include

#include

#define n 10

#define m1 1

#define m2 100

void main()

if(i==n)break;

} printf("\n");}

11樓:

#include "stdio.h"//

#include "stdlib.h"//#include 「time.h」//

void main(void)

12樓:匿名使用者

#include #include

#include

void t_rand() // forprintf("\n");

} // t_rand

void main()

c++編譯中用srand()和rand()%100產生的隨機數為什麼有兩個以上相同的數

13樓:金色潛鳥

rand()%100 是 在 0 到 99 之間復 取隨機 數。

隨機數製為均勻分佈。

當你 取較多 個 數 時,它必然 有 重複。

例如 取 51 個 數 時,有 1 個 重複 的 概率 幾乎為 80-90%。

如果 你再加上什麼 條件,重複 的 概率 可以 提高 或 可以 下降。

這才叫 隨機。

14樓:匿名使用者

rand函式本身有這個bug,在同一秒內取值可能會相同。

C語言用rand產生的是偽隨機數麼

include include void test rand void c語言rand函式產生的最大隨機數是多少?最大32767 2 16 1 系統裡的隨機數是利用初等數論中的同餘定理來實現的.整數rand的原理是 y ax b mod n 其中,n一般是一個很大的素數,幾萬。a也是大素數。而且a,...

怎麼用c 生成指定隨機數,在c 裡怎麼弄隨機數?

include include include using namespace std int main srand unsigned time null 初始化時間種子 int ret rand 3 產生 0 1 2 三種隨機數 int real pow 2,ret 2的0次方 1 2的1次方2 ...

c語言怎樣將產生的隨機數放入一維陣列中

定義一個一維陣列number 然後把取得的隨機數賦值給number c語言如何把rand 產生的隨機數存入陣列 rand 函式是產生隨bai機數的一個隨機函du數。zhi 1 使用dao 專該函式首先應在開屬頭包含標頭檔案stdlib.h include c 建議使用 include,下同 2 在標...