C/C++基础----随机数分布和随机数引擎
随机数分布
除了伯努利分布,其他都是模板,接收单个类型参数,指出分布生成的结果类型。
表示分布生成浮点数,float、double或long double
表示要求一个整型类型,不包括bool或任何char类型
整型分布默认int,浮点默认double
范围都是包含的
均匀分布
uniform_int_distribution<IntT> u(m, n);
uniform_real_distribution<RealT> u(m, n);
m默认0,n默认IntT对象可以表示的最大值;m默认0.0,n默认1.0
伯努利分布
Bernoulli_distribution b(p);//以概率p生成true,默认0.5
Bernoulli_distribution<IntT> b(t, p);//分布的采样大小为整型值t。t默认1,p默认0.5
geometric_distribution<IntT> g(p);//每次试验成功概率为p,默认0.5
negative_binomial_distribution<IntT> nb(k, p);//k次试验成功概率为p。k默认1,p默认0.5
泊松分布
poisson_distribution<IntT> p(x);//均值为double值x
exponential_distribution<RealT> e<lam);//指数分布,lambda浮点值,默认1.0
gamma_distribution<RealT> g(a, b);//形状参数为a,尺度参数为b,默认均为1.0
weibull_distribution<RealT> w(a, b);// 形状参数为a,尺度参数为b,默认均为1.0
extrme_value_distribution<RealT> e(a, b);//a的默认值为0.0,b默认1.0
正态分布
normal_distribution<RealT> n(m, s);//均值m,标准差s;默认0.0,1.0
lognormal_distribution<RealT> ln(m, s);//
chi_squared_distribution<RealT> c(x);//自由度x,默认1.0
cauchy_distribution<RealT> c(a, b);//位置参数a和尺度参数b默认分别0.0,1.0
fisher_f_distribution<RealT> f(m, n);//自由度为m和n,默认值均为1
student_t_distribution<RealT> s(n);//自由度为n,默认值1
抽样分布
discrete_distribution<IntT> d(i, j);
discrete_distribution<IntT> d(il);
i和j是权重序列的输入迭代器,il是权重的花括号列表。权重必须能转换为double
piecewise_constant_distribution<RealT> pc(b, e,w);//b e w输入迭代器
piecewise_linear_distribution<RealT> pc(b, e,w);//b e w输入迭代器
随机数引擎
标准库定义了3个引擎类和3个引擎适配器类,都是模板
default_random_engine
来自其他引擎类型的类型别名,目的是用于大多数情况
linear_congruential_engine
minstd_rand0的乘数为16807,模为2147483647,增量为0
minstd_rand0的乘数为48271,模为2147483647,增量为0
mersenne_twister_engine
mt19937为32位无符号梅森旋转生成器
mt19937_64为64位无符号梅森旋转生成器
subtract_with_carry_engine
ranlux24_base为32位无符号借位减法生成器
ranlux48_base为64位无符号借位减法生成器
discard_block_engine
引擎适配器,将其底层引擎的结果丢弃。用要使用的底层引擎、块大小和旧块大小来参数化
ranlux24使用ranlux24_base引擎,块大小223,旧块23
ranlux48使用ranlux48_base引擎,块大小389,旧块11
independent_bits_engine
引擎适配器,生成指定位数的随机数。用要使用的底层引擎、结果的位数以及保存生成的二进制位的无符号整型类型来参数化。指定位数必须小于指定的无符号类型所能保存的位数。
shuffle_order_engine
引擎适配器,返回的就是底层引擎生成的数,但返回的顺序不同。用要使用的底层引擎和要混洗的元素数目来参数化。
knuth_b使用minstd_rand0和表达小256
C/C++基础----随机数分布和随机数引擎的更多相关文章
- C++11--随机数引擎和随机数分布<random>
/* 随机数引擎: * 有状态的随机数发生器,生成在预定义的最大小值之间的随机数 * 不是真正的随机数--伪随机 */ int main () { std::default_random_engine ...
- Matlab 高斯分布 均匀分布 以及其他分布 的随机数
Matlab 高斯分布 均匀分布 以及其他分布 的随机数 betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布 ...
- rvs产生服从指定分布的随机数 pdf概率密度函数 cdf累计分布函数 ppf 分位点函数
统计工作中几个常用用法在python统计函数库scipy.stats的使用范例. 正态分布以正态分布的常见需求为例了解scipy.stats的基本使用方法. 1.生成服从指定分布的随机数 norm.r ...
- Java入门:基础算法之产生随机数
本程序演示使用Random类的呢想tInt()方法产生随机数. /* Program: 随机数发生器 * Written by: 理工云课堂 * Input: None * Output: 0 到20 ...
- 《java入门第一季》之HashSet小案例:获取10个1至20的随机数,要求随机数不能重复
这是基于HashSet集合的唯一性. /* * 编写一个程序,获取10个1至20的随机数,要求随机数不能重复. * * 分析: * A:创建随机数对象 * B:创建一个HashSet集合 ...
- 基于docker 如何部署surging分布式微服务引擎
1.前言 转眼间surging 开源已经有1年了,经过1年的打磨,surging已从最初在window 部署的分布式微服务框架,到现在的可以在docker部署利用rancher 进行服务编排的分布式微 ...
- js进阶解决浏览器缓存不能自动更新的问题(在ajax的url上带上一个参数,可以是日期,或者是随机数)(随机数Math.random)(取得日期的毫秒数:new Date().getTime();)
js进阶解决浏览器缓存不能自动更新的问题(在ajax的url上带上一个参数,可以是日期,或者是随机数)(随机数Math.random)(取得日期的毫秒数:new Date().getTime();) ...
- Java基础(9):Java生成随机数一定范围内的数的一个典型例子
题目:编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组 note: 通过 (int)(Math.random() * 100) 生成 ...
- js生成[n,m]的随机数,js如何生成随机数,javascript随机数Math.random()
一.预备知识 Math.ceil(); //向上取整. Math.floor(); //向下取整. Math.round(); //四舍五入. Math.random(); //0.0 ~ 1 ...
随机推荐
- arcgis server备份还原过程
一.备份过程 1.找到已经安装的arcgis server安装目录,并找到备份工具: 2.快捷键win + R启动cmd,将备份工具文件拖入cmd窗口,enter 3. 通过backup.py脚本进行 ...
- js 自定义滚动条
http://visugar.com/2017/08/18/20170818CustomScroll/ chrome浏览器 https://www.cnblogs.com/yclblog/p/6 ...
- GinKgoCTF-Misc
一:谁动了我的校徽? Jpg改txt——>寻找——>GKCTF{This_is_a_huaji} 二:奇怪的压缩包1 六位数字的密码一点也不安全!!!!!! 下载压缩包——>有密码( ...
- Js 字符串拼接的两种方法
字符串拼接的两种方法 用数组的方法的好处是:避免变量重新定义.赋值 <!DOCTYPE html> <html lang="en"> <head> ...
- LG3978 【[TJOI2015]概率论】
前置:卡特兰数 记\(C_n\)为\(n\)个节点的二叉树的个数,\(C_0=1\),对于\(n \geq 1\),取一个根节点,枚举其左子树大小,有 \[C_n=\sum_{i=0}^{n-1}C_ ...
- MySQL Binlog常用参数
====================================================================== MySQL Binlog常用参数 log_bin 设置此参 ...
- 普林斯顿数学指南(第三卷) (Timothy Gowers 著)
第V部分 定理与问题 V.1 ABC猜想 V.2 阿蒂亚-辛格指标定理 V.3 巴拿赫-塔尔斯基悖论 V.4 Birch-Swinnerton-Dyer 猜想 V.5 卡尔松定理 V.6 中心极限定理 ...
- 24 正则表达式 re模块
一.正则表达式 1.字符组 ① [abc] 匹配a或b或c ② [a-z] 匹配a到z之间的所有字⺟ [0-9]匹配所有阿拉伯数字 2.元字符 3.量词 4.重要搭配 ① .*? ② .*?x ...
- Gitlab备份与恢复、迁移与升级
0.Gitlab安装 1.安装和配置必要的依赖关系 在CentOS7,下面的命令将在系统防火墙打开HTTP和SSH访问. yum install curl openssh-server postf ...
- 反转链表 II
反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明:1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NULL, m = 2, ...