C/C++ rand() and srand()用法及代碼示例- 純淨天空

文章推薦指數: 80 %
投票人數:10人

rand()函數在C中使用以生成隨機數。

如果我們使用rand()函數生成一個隨機數序列,它將在每次程序運行時一次又一次地創建相同的序列。

假設 ... 當前位置:首頁>>代碼示例 >>用法及示例精選 >>正文 rand() rand()函數在C中使用以生成隨機數。

如果我們使用rand()函數生成一個隨機數序列,它將在每次程序運行時一次又一次地創建相同的序列。

假設如果在rand()的幫助下在C語言中生成5個隨機數,則每次編譯和運行程序時,輸出都必須是相同的數字序列。

用法: intrand(void): returnsapseudo-randomnumberintherangeof0toRAND_MAX. RAND_MAX:isaconstantwhosedefaultvaluemayvary betweenimplementationsbutitisgrantedtobeatleast32767. //Cprogramtogeneraterandomnumbers #include #include    //Driverprogram intmain(void) {     //Thisprogramwillcreatesamesequenceof      //randomnumbersoneveryprogramrun         for(inti=0;i<5;i++)         printf("%d",rand());     return0; } 注意:該程序將在每次運行程序時創建相同的隨機數序列。

輸出1: 4531276342589 輸出2: 4531276342589 輸出n: 4531276342589 srand() srand()函數設置生成一係列偽隨機整數的起點。

如果未調用srand(),則設置rand()種子,就像在程序啟動時調用srand(1)一樣。

種子的任何其他值會將生成器設置為不同的起點。

用法: voidsrand(unsignedseed): Seedsthepseudo-randomnumbergeneratorusedbyrand() withthevalueseed. 注意:在對rand()進行任何調用之前以及在程序啟動之前,偽隨機數生成器隻能播種一次。

每次要生成新一批偽隨機數時,都不應重複播種或重新播種。

標準做法是使用對srand(time(0))的調用結果作為種子。

但是,time()返回的time_t值每次都會變化,因此偽隨機數會隨每個程序調用而變化。

//Cprogramtogeneraterandomnumbers #include #include #include    //Driverprogram intmain(void) {     //Thisprogramwillcreatedifferentsequenceof      //randomnumbersoneveryprogramrun         //Usecurrenttimeasseedforrandomgenerator     srand(time(0));        for(inti=0;i<5;i++)         printf("%d",rand());        return0; } 注意:該程序將在每次運行的程序上創建不同的隨機數序列。

輸出1: 453143232589 輸出2: 897621234458975 輸出n: 56398731232124132 Howsrand()andrand()arerelatedtoeachother? srand()設置種子,蘭德使用該種子來生成“random”號。

如果您在第一次調用rand之前沒有調用srand,就好像您已經調用srand(1)將種子設置為1一樣。

簡而言之,srand()—為rand()函數設置種子。

相關用法 C++cinget()用法及代碼示例 注:本文由純淨天空篩選整理自 rand()andsrand()inC/C++。

非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。



請為這篇文章評分?