【导入】
C++的 rand() 函数产生的随机数范围值是 0~32767 ,如果想产生很大的随机数(几亿,甚至几十亿),就要用到 mt19937 。
【rand()随机数】范围:0~32767 头文件:#include <random>
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
srand(unsigned(time(0)));
int count = rand() % 3 + 1; //范围1~3
int count1 = rand() % 3; //范围0~2
cout << count << endl << count1 << endl;
return 0;
}
总结:取范围[n,m]的数,写法为 rand()%(m-n+1)+n
【二、mt19937随机数】 范围:无限制,但是可以自己设定 头文件: #include<random>
<无范围>
#include <iostream>
#include <chrono>
#include <random>
using namespace std;
int main()
{
// 随机数种子
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
mt19937 rand_num(seed); // 大随机数
cout << rand_num() << endl;
return 0;
}
<手动加范围>
#include <iostream>
#include <chrono>
#include <random>
using namespace std;
int main()
{
// 随机数种子
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
mt19937 rand_num(seed); // 大随机数
uniform_int_distribution<long long> dist(0, 1000000000); // 给定范围
cout << dist(rand_num) << endl;
return 0;
}