使用std::default_random_engine可生成不同分布的随机数,下面使用实例来说明其使用。
随机生成0-1间的实数
//利用当前时间生成的种子,可保证每次生成的值都不一样
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::default_random_engine generator(seed);
std::uniform_real_distribution<double> distribute(0.0, 1.0);//不包含1.0
double v = distribute(generator);//得到0-1间的数值
随机生成min-max间的正整数
//利用当前时间生成的种子,可保证每次生成的值都不一样
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::default_random_engine generator(seed);
int min = 0,max = 100;
std::uniform_int_distribution<int> distribute(min, max);//包含max
int v = distribute(generator);
随机生成正态分布值
正态分布的均值为10,标准差为10:
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::default_random_engine generator (seed);
std::normal_distribution<double> distribution(10,10);
double v = distribution(generator)
此外还可生成伯努利分布,泊松分布等分布的随机值