C++中隨機數的生成

jopen 8年前發布 | 29K 次閱讀 C/C++開發

今天看C++的過程中看到有關于隨機數的程序,便想對C++中關于隨機數的知識結合網上的資料作一個簡單的總結,歡迎補充!
C/C++產生隨機數用到兩個函數rand() 和 srand().
(1)rand()函數
C++隨機數生成函數是rand(),其實質是生成偽隨機數列。
為生成更加隨機的數列,需要srand(unsigned num)來播種。
常用方式srand((unsigned)time(NULL));//增加頭文件time.h
(2)生成[a,b]之間的隨機數
rand()不需要參數,它會返回一個從0到最大隨機數的任意整數,最大隨機數的大小通常是固定的一個大整數。 這樣,如果你要產生0~10的10個整數,可以表達為:
  int N = rand() % 11;
這樣,N的值就是一個0~10的隨機數,如果要產生1~10,則是這樣:
  int N = 1 + rand() % 10;
  總結來說,可以表示為:
  a + rand() % n
其中的a是起始值,n是整數的范圍。
a + rand() % (b-a+1) 就表示 a~b之間的一個隨機數若要0~1的小數,則可以先取得0~10的整數,然后均除以10即可得到隨機到十分位的10個隨機小數,若要得到隨機到百分位的隨機小數,則需要先得到0~100的10個整數,然后均除以100,其它情況依此類推。
通常rand()產生的隨機數在每次運行的時候都是與上一次相同的,這是有意這樣設計的,是為了便于程序的調試。若要產生每次不同的隨機數,可以使用srand( seed )函數進行隨機化,隨著seed的不同,就能夠產生不同的隨機數。
還可以包含time.h頭文件,然后使用srand(time(0))來使用當前時間使隨機數發生器隨機化,這樣就可以保證每兩次運行時可以得到不同的隨機數序列(只要兩次運行的間隔超過1秒)。
(3) c++ 時間類型詳解(time_t和tm)
順便看了一些和時間有關的資料,一并總結了。

參考資料
1、C++隨機數生成
2、C/C++產生隨機數
3、C/C++產生隨機數
4、C++隨機數生成方法
5、C/C++ 中生成特定范圍內的隨機數
6、C++ 時間類型詳解(time_t和tm)

來自: http://blog.csdn.net//jiejinquanil/article/details/50240683

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!