1. 程式人生 > 其它 >C++生成隨機數

C++生成隨機數

技術標籤:C++基礎學習c++random

C++中生成隨機數常用這兩個函式:
rand()和srand()

rand()函式,生成一個範圍在[0,RAND_MAX]的隨機數,RAND_MAX的值為32767

其中RAND_MAX定義在cstdlib標頭檔案中。

#include <iostream>
using namespace std;
#include <cstdlib>

int main() {
	cout << RAND_MAX << endl;
	cout << rand() << endl;;

	return
0; }

注意:rand()函式生成的是偽隨機數,故每次執行的結果是相同的。

我們可以用srand((unsigned)time(NULL))的方法產生不同的隨機種子,需要標頭檔案ctime。

#include <iostream>
using namespace std;
#include <ctime>
#include <cstdlib>

int main() {
	srand((unsigned)time(NULL));
	cout << RAND_MAX << endl;
	cout << rand() <<
endl;; return 0; }

產生指定範圍內的隨機數:
可以先使用rand()函式產生一個[0,RAND_MAX]範圍內的隨機數,然後在變換到指定範圍內。
產生[a,b)的隨機數,可以使用 (rand() % (b-a))+a;
產生[a,b]的隨機數,可以使用 (rand() % (b-a+1))+a;
產生(a,b]的隨機數,可以使用 (rand() % (b-a))+a+1;
通用公式:a+rand() % n;
其中:a為範圍起始位置,n為整數的範圍
產生[a,b]的隨機數,可以使用 a+(int)b*rand()/(RAND_MAX+1);
產生[0,1]的浮點數,可以使用 rand()/double(RAND_MAX);


例子
產生500個[0,1]的隨機數:

#include <iostream>
using namespace std;
#include <cstdlib>
#include <ctime>

int main() {
	srand((unsigned)time(NULL));
	for (int i = 1; i <= 500; i++)
		cout << rand()%2 << endl;

	return 0;
}