【1】random
产生随机数
【2】实例代码
#include "pch.h"
#include <iostream>
#include<random>
#include<time.h>
#include<string>
using namespace std;
void main61()
{
//随机生成10个数
default_random_engine e1;
for (size_t i = 0; i < 10; i++)
{
cout << e1()<<endl;
}
//随机生成0-9范围内部的数
uniform_int_distribution<unsigned> u(0, 9);//设定范围0-9
default_random_engine e2;//生成无符号随机整数的种子
default_random_engine e22(time(0));//生成无符号随机整数种子 时间为基础
for (size_t i = 0; i < 10; i++)
{
cout << u(e2) << endl;
}
//设置随机种子
default_random_engine e11;
default_random_engine e12(2145789);
default_random_engine e13;
e13.seed(32767);
default_random_engine e14(32767);
for (size_t i = 0; i!=100; i++)
{
if (e11()==e12())
{
cout << "unseeded match at iteration :" << i << endl;
}
if (e13()!=e14())
{
cout<< " seeded differs at iteration:" << i << endl;
}
}
}
void main62()
{
default_random_engine e;//种子
uniform_int_distribution<int> u(0, 9);//均匀分布
for (size_t i = 0; i < 10; i++)
{
cout << u(e) << endl;
}
cout << u.max();//生成的最大的数
cout << u.min();//生成的最小的数
cin.get();
}
//非均匀随机分布
void main63()
{
default_random_engine e;//随机种子
normal_distribution<> n(4, 1.5);//均值4 标准差为1.5
vector<unsigned> vals(9);//9个元素均为0
for (size_t i = 0; i!=200; i++)
{
unsigned v = lround(n(e));//舍入到最近整数
if (v<vals.size())//生成的为0-8所以小于9
{
++vals[v];
}
}
for (size_t j = 0; j!= vals.size(); j++)
{
cout << j << ":"<<string(vals[j], '*') << endl;//输出vals[j]个星星
}
cin.get();
}