【筆記】如何產生隨機數
C++中沒有自帶的random函式,要實現隨機數的生成就需要使用rand()和srand()。不過,由於rand()的內部實現是用線性同餘法做的,所以生成的並不是真正的隨機數,而是在一定範圍內可看為隨機的偽隨機數。
rand()
-
單純的rand()會返回一個0至RAND_MAX之間的隨機數值,而RAND_MAX的值與int位數有關,最小是32767。不過rand()是一次性的,因為系統預設的隨機數種子為1,只要隨機數種子不變,其生成的隨機數序列就不會改變。
-
其實,對於rand()的範圍,我們是可以進行人為設定的,只需要在巨集定義中定義一個random(int x)函式,就可以生成範圍為0至x的隨機數值。當然,也可以定義為random(a,b),使其生成範圍為a至b的隨機數值。具體定義方法在通式部分。
srand()
- srand()可用來設定rand()產生隨機數時的隨機數種子。通過設定不同的種子,我們可以獲取不同的隨機數序列。可以利用srand((unsigned
int)(time(NULL))的方法,利用系統時鐘,產生不同的隨機數種子。不過要呼叫time(),需要加入標頭檔案< ctime > - 示例:
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
srand((unsigned)time(NULL));
for(int i=0;i<10;i++)
cout<<rand()<<' ';
return 0;
}
公式:
-
產生一定範圍隨機數的通用表示公式是:
-
取得[0,x)的隨機整數:rand()%x; 取得[a,b)的隨機整數:rand()%(b-a)+a
-
取得[a,b]的隨機整數:rand()%(b-a+1)+a; 取得(a,b]的隨機整數:rand()%(b-a)+a+1
-
取得0-1之間的浮點數:rand()/double(RAND_MAX)
示例:
#include<iostream>
#include<cstdlib>
#include<ctime>
#define random(a,b) (rand()%(b-a+1)+a)
using namespace std;
int main()
{
srand((unsigned)time(NULL));
for(int i=0;i<10;i++)
cout<<random(1,100)<<' ';
return 0;
}
參考:https://www.cnblogs.com/S031602240/p/6391960.html#1
相關文章
- R產生隨機數隨機
- 如何產生指定範圍的隨機數隨機
- 從oracle表中隨機取記錄,產生隨機數和隨機字串Oracle隨機字串
- vc中產生隨機數隨機
- c++產生隨機數C++隨機
- Rust中如何產生隨機數或密碼?Rust隨機密碼
- js隨機產生區間數JS隨機
- matlab產生隨機數或隨機矩陣Matlab隨機矩陣
- 計算機隨機數的產生 (轉)計算機隨機
- 高效產生不重複的隨機數隨機
- linux生產32位隨機數Linux隨機
- MATLAB中如何產生指定範圍的隨機數Matlab隨機
- 如何使用excel 2007產生隨機數Excel隨機
- JavaScript產生隨機數例項程式碼JavaScript隨機
- C 語言產生隨機數的方法隨機
- C語言產生隨機數的方法C語言隨機
- Matlab產生隨機數函式小結Matlab隨機函式
- 高效產生一組不重複的隨機數隨機
- 利用arc4random_uniform()產生隨機數randomORM隨機
- 產生0到100內的任意隨機數隨機
- oracle要對一個欄位產生隨機數Oracle隨機
- ORACLE產生隨機數的多種方法分享 轉Oracle隨機
- Random 專案總結 -11 產生隨機數字random隨機
- Math類產生隨機數後保留一位小數隨機
- 短視訊軟體開發,驗證碼的隨機數如何產生隨機
- matlab中的產生隨機數的rand函式Matlab隨機函式
- Matlab產生特定範圍的隨機數矩陣Matlab隨機矩陣
- js實現的產生隨機數程式碼例項JS隨機
- 隨機產生0-1之間實數的方法隨機
- C#隨機產生漢字C#隨機
- 集合框架-產生10個1-20之間的隨機數,要求隨機數不能重複框架隨機
- 開發:隨筆記錄之 生成6位隨機數筆記隨機
- 如何在linux中用命令產生一個範圍內的隨機數?Linux隨機
- Python產生20個隨機整數的方法詳解!Python隨機
- C語言中產生真隨機數的方法,帶封裝C語言隨機封裝
- 產生一個32位的16進位制隨機數隨機
- 如何在 Linux 中產生、加密或解密隨機密碼Linux加密解密隨機密碼
- 關於如何產生隨機數的幾種方法彙總!(2018.07.08)隨機