随机数生成引擎:定义了生成随机位序列的无符号整数序列机制的类模板。
随机数生成器:随机数引擎类模板的一个预定义的实例。
随机数引擎适配器:类模板,通过修改另一个随机数引擎生成的序列来生成随机数序列。
分布:随机序列中的数出现在序列中的概率。STL定义了位各种不同的分布定义函数对象的类模板。
随机数种子:随机数的生成算法总是从单个或多个种子开始的,他们代表着产生随机数的计算的初始输入。
获取随机数种子:std::random_device rd;
random_device类定义的变量可以生成用来作为种子的随机的无符号整数值,也即可以用来出初始化随机数生成引擎。
随机数生成器:
Engine | 说明 |
default_random_engine | |
shuffle_order_engine | |
linear_congruential_engine | 基于线性同余的生成器 |
mersenne_twister_engine | |
subtract_with_carry_engine | 带进位减法引擎 |
discard_block_engine | 带进位加法引擎 |
independent_bits_engine | |
mt19937 | 马特塞特旋转演算引擎(-maxint,+maxint) |
分布类模板:
distribution | 说明 |
均匀分布 | ************************** |
uniform_int_distribution<types> u(m,n) | 产生[m,n]均匀分布的整数 |
uniform_real_distribution<types> u(m,n) | 产生[m,n]默认[0-1]均匀分布的实数 |
伯努利分布 | ************************** |
bernoulli_distribution b( p ) | |
binomial_distribution<types>b(t, p) | |
geometric_distribution<types> g( p ) | |
negative_binomial_distribution<types> nb(k, p) | |
泊松分布 | ************************* |
poisson_distribution<types> p(x) | |
exponential_distribution<types> e (lam) | |
gamma_distribution <types> g(a, b) | |
weibull_distribution<types> w (a, b) | |
正态分布 | ************************* |
normal_distribution<types> n (m, s) | |
lognomal_distribution<types> ln (m, s) | |
chi_squared_distribution<types> c ( x ) | |
cauchy_distribution<types> c (a, b) | |
fisher_f__distribution<types> f (m, n) |
student_t__distribution<types> s( n) | |
抽样分布 | ************************* |
discrete_distribution<types> d( i, j ) | |
discrete__distribution<types> d { il } | |
piecewise_constant_distribution<types> pc(b, e, w) | |
piecewise_linear_distribution<types> pl(b, e, w) |
使用示范:
std::mt19937 gen(std::random_device{}());//{mt19937的数值范围是INT_MIN到INT_MAX
std::uniform_int_distribution<int> dis;//分布,写成类模板
int ran=dis(gen);
原文链接:https://blog.csdn.net/zzyczzyc/article/details/93919088