srand函數怎麼用,srand函數和rand函數到底如何使用
在c語言裏面,兩個函數包含在頭檔案裏面,c++裏面,標準庫(被包含於中).
srand函數是隨機數發生器的初始化函數。
原型:void srand(unsigned seed);
rand函數用來產生隨機數,當然是僞隨機數。
原型:int rand(void)
seed的作用:srand函數的作用是根據參數seed,設定一個隨機起始點,而rand函數根據這個起始點,產生隨機數序列。默認的隨機種子爲1。如果隨機種子一樣,rand函數所產生的隨機序列也一樣。
因此,爲使每次程序執行都能產生不同的隨機序列,每次都應產生一個不同的種子參數。
2.請舉例講講vc中srand函數怎麼用先從隨機數的原理談起.
計算機的隨機數都是由僞隨機數,即是由小M多項式序列生成.產生每個小序列都有一個初始值,即隨機種子.
srand()產生隨機種子.
rand()產生隨機數
要保證計算機產生不相同的隨機數,應保證它們的隨機種子是不一樣的.
srand( (unsigned)time( NULL ) );
就是以時間做爲隨機種子,因爲每次你執行的時間總是不一樣的.
補充一點是小M多項式序列的周期是65535,即每次利用一個隨機種子生成的隨機數的週期是65535,即你取得65535個隨機數後它們又重複出現了.
int nRand;
srand( (unsigned)time( NULL ) );
for(int i=0;i<65538;i++)
{
nRand=rand();
if(i==1||i==65536)
printf("%drn",nRand);
}
3.C語言srand和rand函數怎麼用rand()函數,一般根srand()函數一起用。它們在一起,作用是:產生一個隨機數。
通常格式爲:
srand ( (unsigned) time (NULL) );
a=rand()%x; //a,x,均爲整型變量,其中,x在之前應被賦值。
srand函數裏面的unsigned也可以換成其它的。例如:int之類的數據類型,但結果也會有相應的變化。
透過rand函數產生隨機數以後,用%x來限定它的範圍。即:0<=a<x。
其原理是:用那個隨機數,去除以x,留下所得餘數,作爲最終結果。
4.srand()在C++中怎麼用srand()
功能:初始化隨機數發生器
用法: void srand(unsigned int seed)
所在頭檔案: stdlib.h
srand()用來設定rand()產生隨機數時的隨機數種子。參數seed必須是個整數,如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。
計算機的隨機數都是由僞隨機數,即是由小M多項式序列生成的,其中產生每個小序列都有一個初始值,即隨機種子。(注意: 小M多項式序列的週期是65535,即每次利用一個隨機種子生成的隨機數的週期是65535,當你取得65535個隨機數後它們又重複出現了。)
我們知道rand()函數可以用來產生隨機數,但是這不是真正意義上的隨機數,是一個僞隨機數,是根據一個數(我們可以稱它爲種子)爲基準以某個遞推公式推算出來的一系列數,當這系列數很大的時候,就符合正態公佈,從而相當於產生了隨機數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是定了的,除非你破壞了系統。
5.C語言 srand()函數直接用rand() 產生的一套隨機數是固定不變的。
也就是說 這次 產生了 一套 例如有 10 個數 a[0],a[1],..a[9]
下次 再跑這個程序 產生 一套 10 個數 b[0],b[1],..b[9]
得到的 b[0]==a[0]; b[1]==a[1];。.b[9]==a[9];
用 srand() 生成新種子,那麼 新的一套 和 老 的 一套 隨機數 次序就 不一樣了,數值也不完全一樣了,這樣模擬 的 僞隨機 就會 接近 真隨機。
6.srand和rand函數怎麼用,麻煩寫個簡短的c++給我看看首先我們要對rand&srand有個總體的看法:srand初始化隨機種子,rand產生隨機數,下面將詳細說明。
rand(產生隨機數)
表頭檔案: #include
定義函數 :int rand(void)
函數說明 :
因爲rand的內部實現是用線性同餘法做的,他不是真的隨機數,只不過是因爲其週期特別長,所以有一定的範圍裏可看成是隨機的,rand()會返回一隨機數值,範圍在0至RAND_MAX 間。在調用此函數產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子爲1。rand()產生的是假隨機數字,每次執行時是相同的。若要不同,以不同的值來初始化它.初始化的函數就是srand()。
返回值:
返回0至RAND_MAX之間的隨機整數值,RAND_MAX的範圍最少是在32767之間(int),即雙字節(16位數)。若用unsigned int 雙字節是65535,四字節是4294967295的整數範圍。
0~RAND_MAX每個數字被選中的機率是相同的。
範例:
/* 產生介於1 到10 間的隨機數值,此範例未設隨機數種子,完整的隨機數產生請參考
srand()*/
#include
main()
{
int i,j;
for(i=0;i
定義函數:void srand (unsigned int seed);
函數說明:
srand()用來設定rand()產生隨機數時的隨機數種子。參數seed必須是個整數,通常可以利用geypid()或time(0)的返回值來當做seed。如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。
範例
/* 產生介於1 到10 間的隨機數值,此範例與執行結果可與rand()參照*/
#include
#include
main()
{
int i,j;
srand((int)time(0));
for(i=0;i
#include
#include
int main( void )
{
int i;
// Seed the random-number generator with current time so that
// the numbers will be different every time we run.
//
srand( (unsigned)time( NULL ) );
// Display 10 numbers.
for( i = 0; i
7.Rand函數和srand函數在keil中怎麼用,能給我舉個例子嗎srand((unsigned)time(NULL))則使用系統定時/計數器的值作爲隨機種子。每個種子對應一組根據算法預先生成的隨機數,所以,在相同的平臺環境下,不同時間產生的隨機數會是不同的,相應的,若將srand(unsigned)time(NULL)改爲srand(TP)(TP爲任一常量),則無論何時執行、執行多少次得到的“隨機數”都會是一組固定的序列,因此srand生成的隨機數是僞隨機數。[1]
庫函數中系統提供了兩個函數用於產生隨機數: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被定義爲長整型,它返回從1970年1月1日零時零分零秒到目前爲止所經過的時間,單位爲秒。
srand()、rand()用法舉例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include
#include
#include
voidmain()
{
inti,j;
srand((int)time(0));
for(i=0;i{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf("%d",j);
}
}
-
教育法規定學生的權利
法律主觀:根據《教育法》第四十三條的規定,受教育者享有下列權利:(一)參加教育教學計劃安排的各種活動,使用教育教學設施、設備、圖書資料;(二)按照國家有關規定獲得獎學金、貸學金、助學金;(三)在學業成績和品行上獲得公正評價,完成規定的學業後獲得相應的學業證書、學位證...
-
網易借錢app叫什麼
網易並沒有出專門借錢的APP產品。在網易支付APP中,有專爲優質客戶提供的專屬借款產品網易來錢,因此用戶想要申請網易借錢,需要下載安裝最新版的網易支付APP,然後在首頁點擊“來錢”,刷臉來領取授信額度。另外,網易並沒有提供其它的借款渠道,請在官方渠道申請網易的借...
-
補辦國有土地使用證的步驟
國有土地使用證補辦的申請流程和審查標準:申請人需提供書面申請和土地登記申請書,個人需提供身份證複印件,單位需提供法人身份證明、委託書、工商營業執照等材料。審查標準包括補證事實依據清楚合法,符合登記要求。土地登記中心經辦人員進行初審,符合標準的提出同意...
-
金陵十二釵的命運都如何
林黛玉於賈寶玉、薛寶釵大婚之夜淚盡而逝。薛寶釵最後與賈寶玉成婚,婚後不久,寶玉對黛玉念念不忘,最終出家。薛寶釵獨守空閨,孤獨地死去。賈元春在省親之後,再無出宮的機會,最後無辜地死於政治鬥爭。賈探春,賈府爲賈史氏過壽辰時,她被南安太妃看中,嫁爲下一任南安王的王...