1. 程式人生 > 實用技巧 >【C++程式設計基礎】——C++生成隨機數

【C++程式設計基礎】——C++生成隨機數

轉自:https://blog.csdn.net/sinat_41909065/article/details/82960361

1.如何生成隨機數

(1)C++中生成隨機數的函式是rand(),在標頭檔案#include<cstdlib>中,返回0~RAND_MAX(32767)的整數,不需要引數,它是根據種子生成的,根據不同的種子產生不同的隨機序列。

#include<iostream>
#include<cstdlib> // rand()和srand() 包含在這個庫中
using namespace std;
int main()
{
    /*返回0~RAND_MAX(32767)的整數,不需要引數,
    它是根據種子生成的,根據不同的種子產生不同的隨機序列。
*/ for(int i=0;i<10;i++) { cout<<rand()<<endl; } return 0; }

執行結果:

這個程式無論何時何地,執行的結果都如上所示。系統預設的種子是1,隨機序列又是根據種子產生的,所以說每次使用的隨機序列都是固定的,要想隨機數產生每次都不一樣,不許設定種子隨機。

(2)srand函式。

語法:void srand(unsigned int seed);

srand()函式就是用來設定rand()函式的種子的,根據不同的引數產生不同的種子。

#include<iostream>
#include
<cstdlib> // rand()和srand() 包含在這個庫中 using namespace std; int main() { /*返回0~RAND_MAX(32767)的整數,不需要引數, 它是根據種子生成的,根據不同的種子產生不同的隨機序列。*/ //srand()函式就是用來設定rand()函式的種子的。 for(int i=0;i<10;i++) { srand(i); cout<<rand()<<endl; } return 0; }

執行結果:

同樣,這個程式何時何地執行結果都一樣,因為srand()的引數一樣,生成的種子一樣,rand()函式返回的值也一樣。

2.引入time函式

語法:time(NULL);

函式會返回1970年1月1日至今所經歷的時間(以秒為單位),需要引入標頭檔案#include <ctime>

sleep()方法,使用sleep()函式實現延時,它的單位是ms,如延時2秒,用sleep(2000)。需要引入標頭檔案#include<windows.h>和#include<unistd.h>

sleep函式的作用:是讓程式等待若干時間,以一定的週期來實現若干操作,比如下面的例子,延遲一秒,時間time函式的值就會改變,則種子函式srand的值就會不一樣。

#include <iostream>
#include<cstdlib> // srand() 包含在這個庫中
#include <ctime>
#include<windows.h>
#include<unistd.h>
using namespace std;

int main()
{
    /*函式會返回1970年1月1日至今所經歷的時間(以秒為單位)
    time();
    */
    for(int i=0;i<10;i++)
   {
       srand(time(NULL));
       cout<<rand()<<endl;
       sleep(1);
    } 
        
    return 0;    
 } 

執行結果:

從而實現生成隨機數的目的。

參考文章:

https://blog.csdn.net/sinat_41909065/article/details/82960361

https://www.cnblogs.com/afarmer/archive/2011/05/01/2033715.html