随机数分布
随机数分布一般用到均匀分布 uniform_int_distribution<IntT> u(m, n);
和 uniform_real_distribution<RealT> u(x, y);
生成指定类型的,在给定范围内的值。其中 m
或 x
是可以返回的最小值; n
或 y
是最大值。默认的 m
为 0 且 n
为 IntT
可表示的最大值。默认 x
为 0 且 y
为 1.0 。
随机数引擎
default_random_engine
某个其他引擎类型的类型别名,目的是用于大多数情况。
linear_congruential_engine
minstd_rand0
的乘数为 16807 ,模为 2147483647 ,增量为 0 。
minstd_rand
的乘数为 48271 ,模为 2147483647 ,增量为 0 。
mersenne_twister_engine
mt19937
为 32 位无符号美森旋转生成器。
mt19937_64
为 64 位无符号美森旋转生成器。
使用方法
#include <random>
#include <iostream>
int main()
{
std::random_device rd; // 将用于为随机数引擎获得种子
std::mt19937 gen(rd()); // 以播种标准 mersenne_twister_engine
std::uniform_int_distribution<> dis(1, 6);
for (int n=0; n<10; ++n)
// 用 dis 变换 gen 所生成的随机 unsigned int 到 [1, 6] 中的 int
std::cout << dis(gen) << ' ';
std::cout << '\n';
}