rand產生的是偽隨機數,什麼叫偽隨機數 還有rand和sr

2021-04-21 22:06:01 字數 2193 閱讀 1289

1樓:匿名使用者

rand()%最大+最小

這樣輸入範bai圍產生隨機數,但du是電腦zhi裡的隨機數順dao序已經排列好了,執行程式後你內會發現每次出現容的隨機數都一樣,所以要設定一個隨機數種子,來插入電腦已經排列好的隨機順序,這樣就能解決每次出現一樣資料的問題。 把下面這段程式加到rand()前面就ok了。。。

unsigned seed;

printf("please input seed:");

scanf("%u",&seed);

srand(seed);

rand產生的是偽隨機數,什麼叫偽隨機數?還有rand和srand有什麼區別啊?謝謝了,大神幫忙啊

2樓:青春無悔°擄夔

stdlib.h標頭檔案中有巨集#define rand_max 0x7fff rand()產生一個0到0x7ffff即0到32767之間的隨機數 rand()/(rand_max+1.0)就等於一個0到1之間的小數了,因為rand()最大是32767最小是0,再除以32768就是一個0到1之間的小數(不能等於1),再乘以10就是一個0到10之間的數了(不等於10).

最後再加1,就成了一個求1到10之間隨機數的式子了. srand函式是隨機數發生器的初始化函式,原型: void srand(unsigned seed); 它需要提供一個種子,如:

srand(1); 直接使用1來初始化種子。 不過常常使用系統時間來初始化,即使用 time函式來獲得系統時間,它的返回值為從 00:00:

00 gmt, january 1, 1970 到現在所持續的秒數,然後將time_t型資料轉化為(unsigned)型在傳給srand函式,即還有一個經常用法,不需要定義time_t型t變數,即: srand((unsigned) time(null)); 直接傳入一個空指標,因為你的程式中往往並不需要經過引數獲得的t資料。

srand((int)getpid()); 使用程式的id(getpid())來作為初始化種子,在同一個程式中這個種子是固定的 隨機輸出十個0-100之間的整數 #include #include #include void main( void ) }

求教c語言中rand()和srand()具體用法的區別?另外,rand()是產生0到1之間的隨機數

3樓:匿名使用者

rand()產生一個0~32767之間的偽隨機數。而srand(unsigned t)是為rand()產生偽隨機數下一個「種子」

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

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

4樓:

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

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

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

5樓:匿名使用者

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

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

rand產生的隨機數是什麼型別

6樓:匿名使用者

函式原型:int rand(void);

所以返回值為int型

返回的隨機數範圍是0~rand_max

7樓:宛丘山人

數值型別,歲語言不同而不同,又多是整形,有的是實型

8樓:

int型別 c語言中的一種下整數型別

9樓:匿名使用者

int or unsigned int

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

隨機數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 32...

c 產生隨機數的程式,C 產生隨機數的程式

要看r的 了吧。如果r的 是某個和時間有關的數 就可以解釋了 後三句就是 讓某個在65536和0之間的數除以65536獲得0和1之間的隨機數 r 2053.0 r 13849.0 這是兩個有個是素數吧 應該是的 2053就是 質因數分解13849 11 1259 那麼這兩個素數的公倍數大於65535...

c 關於產生一定比例的隨機數,c 問題 rand() 預設產生的隨機數範圍

如果生成固定數量的兔子和狼,那麼你的思路反了,用兔子做例子,你應該用兔子的數量來迴圈,然後隨機生成位置,如果位置上已經有兔子或者狼了就重新隨機位置。如果你想要一定的概率而不是一定的數量,那你的結構沒有大問題,但得在隨機的時候考慮他們之間的比例。比如你的比例是4 2 1,那麼就rand 7,得到0 3...