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

2021-03-28 01:56:03 字數 3018 閱讀 2829

1樓:溦信

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函式,即:

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產生的是偽隨機數,什麼叫偽隨機數?還有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++裡rand()不是偽隨機數嗎?有什麼辦法能真正隨機的?

4樓:匿名使用者

貌似沒有,這也是目前電腦科學領域亟待研究的問題之一(我看老外書上寫的)。

5樓:匿名使用者

#include

srand(time(0));

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

6樓:匿名使用者

函式原型:int rand(void);

所以返回值為int型

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

7樓:宛丘山人

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

8樓:

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

9樓:匿名使用者

int or unsigned int

rand產生的是偽隨機數,什麼叫偽隨機數?還有rand和srand有什麼區別啊?

10樓:匿名使用者

rand()%最大+最小

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

unsigned seed;

printf("please input seed:");

scanf("%u",&seed);

srand(seed);

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

11樓:匿名使用者

#include

#include

void test_rand(void)}

rand產生的隨機數是什麼型別,rand隨機函式產生的值的範圍

函式原型 int rand void 所以返回值為int型 返回的隨機數範圍是0 rand max 數值型別,歲語言不同而不同,又多是整形,有的是實型 int型別 c語言中的一種下整數型別 int or unsigned int rand 隨機函式產生的值的範圍?cplusplus中有這樣的介紹 r...

隨機數是什麼,什麼是隨機數?

隨機數是專門的隨機試驗的結果。產生隨機數有多種不同的方法。這些方法被稱為隨機數發生器。隨機數最重要的特性是 它所產生的後面的那個數與前面的那個數毫無關係。就是隨意的一個數,還有就是範圍,比如1到9之間的隨機數,3就是這個範圍的隨機數,123456789隨機抽取一個,這就叫隨機數 例 一臺電腦,正在0...

隨機數生成的原理和方法,電腦取隨機數是什麼原理,是真正的隨機數嗎

原理太高深,提供方法是 可以的1 在c 中可以的,函式是這樣用,比如0至1的隨機數random ran new random int randkey ran.next 0,1 不過這樣會有重複,可以給random一個系統時間做為引數,以此產生隨機數,就不會重複了 system.random a ne...