c++进阶STL-随机数

C++的<random>库提供了一种更强大的方式来生成随机数,包括不同分布和引擎。随机数发电机每次生成的序列相同,可通过设置种子实现变化。本文介绍了如何生成随机序列,如使用static、seed或random_device。此外,还讨论了浮点数分布(如uniform_real_distribution)、正态分布和伯努利分布的应用。
摘要由CSDN通过智能技术生成

介绍

在新的标准之前,C和C++产生随机数都依赖与简单的C库函数rand(),这个函数产生一个伪随机数均匀分布在[0-system dependent maximum value(at least 32767)]。


但是rand()函数存在问题:有的程序需要不同的随机数范围,有的程序需要浮点随机数,有的程序可能需要的不是均匀分布的随机数。所以在程序员处理、转换这些问题的时候往往可能引入不随机的特性


为了解决这个为题,新的c++库引入随机数库,定义在 <random> 头文件中,主要两个类:

Engine Distribution
生成无符号整型的随机序列 利用Engine,根据特定的分布,返回随机数

random-number generator:指的是distribution 的对象关联一个Engine

知识点

库中的Distribution 和 Engine

详见: c++ prime p883-p885

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)

<
Engine 说明
default_random_engine
shuffle_order_engine
linear_congruential_engine
mersenne_twister_engine
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值