【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