c 中rand 函式的範圍,c 中rand 函式的範圍

時間 2021-08-13 22:26:36

1樓:匿名使用者

rand函式範圍:在某些平臺下(例如 windows)rand_max 只有 32768。如果需要的範圍大於 32768,那麼指定 min 和 max 引數就可以生成大於 rand_max 的數了,或者考慮用 mt_rand() 來替代它。

rand函式不是真正的隨機數生成器,而srand()會設定供rand()使用的隨機數種子。如果你在第一次呼叫rand()之前沒有呼叫srand(),那麼系統會為你自動呼叫srand()。而使用同種子相同的數呼叫 rand()會導致相同的隨機數序列被生成。

c語言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是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被定義為長整型,它返回從2023年1月1日零時零分零秒到目前為止所經過的時間,單位為秒。

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

#include

#include

#include

void main()}

2樓:匿名使用者

範圍是0~32767。

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

函式一:int rand(void);

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

函式二:void srand(unsigned seed);

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

rand函式不是真正的隨機數生成器,而srand()會設定供rand()使用的隨機數種子。如果你在第一次呼叫rand()之前沒有呼叫srand(),那麼系統會為你自動呼叫srand()。而使用同種子相同的數呼叫 rand()會導致相同的隨機數序列被生成。

3樓:張俊瑞

應該都是實數吧,「/1.0」、「/10.0」起碼決定了輸出是實數,當然顯示上如果是整數會捨去小數點。

4樓:匿名使用者

因為精度 前者精度沒有丟失 而後者精度丟失

切 前者只用 0.0 和1.0 後者 有0.0 0.1 0.2 ... ... 1.9 由於精度 後者的小數為很多大於一位

5樓:

srand((int)time(null));

rand()%n;//n以內的隨機數...

6樓:匿名使用者

// crt_rand.c

// this program seeds the random-number generator

// with the time, then exercises the rand function.

//#include

#include

#include

void ******randdemo( int n )void rangedranddemo( int range_min, int range_max, int n )

}int main( void )

給你看份sdk裡的**你就懂了

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

7樓:匿名使用者

隨機數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個,基本能夠保證產生的隨機數唯一

8樓:匿名使用者

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

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

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

9樓:二十年

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

c++中rand()%0=?

10樓:愛上北極之光

函式名: rand

功 能: 隨機數發生器 用 法: int rand(void);

所在標頭檔案: stdlib.h

函式說明 :

rand()的內部實現是用線性同餘法做的,它不是真的隨機數,因其週期特別長,故在一定

的範圍裡可看成是隨機的。

rand()返回一隨機數值的範圍在0至rand_max 間。rand_max的範圍最少是在32767之間(int)。用

unsigned int 雙位元組是65535,四位元組是4294967295的整數範圍。0~rand_max每個數字被選中

的機率是相同的。

使用者未設定隨機數種子時,系統預設的隨機數種子為1。

rand()產生的是偽隨機數字,每次執行時是相同的;若要不同,用函式srand()初始化它。

程式例:

#include

using namespace std;

#include

#include

#define min 1 //隨機數產生的範圍

#define max 10

int main()

cout<

return 0;}

哪位大哥知道,c++中標準函式srand()rand()是有什麼用,和用法!!!

11樓:匿名使用者

12樓:出溥心

產生隨機數的函式,srand()有一個引數,用來初始化隨機數發生器,也就是隨機數種子,rand()返回一個0-1之間的隨機數,如果不用srand初始化也可以產生隨機數,不過是一個固定序列,在計算機裡是沒有真正的隨機數的,都偽隨機數

c++中-rand()%100+25範圍是什麼?為什麼?

13樓:匿名使用者

25到124,一個數對100取餘,等於0--99之間的一個數,加25就等於25到124之間的一個隨機數

C 中pow函式,C 中pow(x,y)函式怎麼用?最好給舉個例子

很路人 2型別是整型,0.5屬於浮點數,而你的函式宣告裡面第一個引數是浮點數,第二個引數是整型的,int轉float double可以隱式轉換,編譯器允許這種轉換,但是float double不能隱式轉換成int,這樣可能會造成資料丟失,編譯器不允許,除非你強制轉換 暗影之王 在vc 6.0中原型為...

c中建構函式與解構函式的問題,C 中建構函式與解構函式的問題

你的getname函式在 你的類定義中只有getscore和getid c 關於建構函式和解構函式呼叫次數的問題 沒問題啊。引數傳遞的時候第一次拷貝構造呼叫,在函式返回的時候賦值給c2 再次呼叫了拷貝構造。析構的話 c1 c2 c 三次 傳遞引數和返回引數各一次拷貝建構函式,所以是2次 有兩個物件c...

c語言使用隨機函式rand產生1099的互不相

你好!你的 就沒有輸出部分呀 輸出部分新增了,你看看吧 include stdlib.h include stdio.h include time.h void main int n a 50 i,j,t srand time null for i 0 i 50 i a i rand 90 10 f...