C++中随机数的生成
1.随机数由生成器和分布器结合产生
2.分布器利用运算符()产生随机数,要传入一个generator对象作为参数
std::default_random_engine generator;
std::uniform_int_distribution<int> dis(,);
for(int i=;i<;i++)
{
std::cout<<dis(generator)<<std::endl;
}
如果嫌每次调用都要传入generator对象麻烦,可以使用std::bind,要包含头文件functional
std::default_random_engine generator;
std::uniform_int_distribution<int> dis(,);
auto dice= std::bind(dis,generator);
for(int i=;i<;i++)
{
std::cout<<dice()<<std::endl;
}
3.种子
std::default_random_engine generator(time(NULL));
std::uniform_int_distribution<int> dis(,);
auto dice= std::bind(dis,generator);
for(int i=;i<;i++)
{
std::cout<<dice()<<std::endl;
}
4.关于生成器
linear_congruential_engine 线性同余法mersenne_twister_engine 梅森旋转法substract_with_carry_engine滞后Fibonacci
template <class UIntType, UIntType a, UIntType c, UIntType m>class linear_congruential_engine;第一个参数:生成器类型unsigned int,unsigned long等第二到第四个参数:是线性同余法公递推公式Nj+i =(AxNj+C) (mod M)里的三个常数值A,C,M要求:如果m不为0,a,c的值要小于m
typedef linear_congruential<unsigned long, , , > minstd_rand0;
typedef linear_congruential<unsigned long, , , > minstd_rand;
4.1线性同余法:
minstd_rand()minstd_rand0利用适配器变种后的线性同余法knuth_b minstd_rand0 with shuffle_order_engine
4.2梅森旋转法:
default_random_engine()mt19937mt19937_64
4.3滞后Fibonacci法
ranlux24_baseranlux48_base
ranlux24 ranlux24_base with discard_block_engineranlux48 ranlux48_base with discard_block_engine
5.关于分布器
作用1:改变生成类型,利用模版参数作用2:改变值区间,利用实例构造函数参数。或其响应的成员函数设置参数。作用3:改变概率分布,选用不同的分布器类型
5.1均匀分布:
uniform_int_distribution 整数均匀分布uniform_real_distribution 浮点数均匀分布
5.2伯努利类型分布:(仅有yes/no两种结果,概率一个p,一个1-p)
bernoulli_distribution 伯努利分布binomial_distribution 二项分布geometry_distribution 几何分布negative_biomial_distribution 负二项分布
5.3 Rate-based distributions:
poisson_distribution 泊松分布exponential_distribution 指数分布gamma_distribution 伽马分布weibull_distribution 威布尔分布extreme_value_distribution 极值分布
5.4正态分布相关:
normal_distribution 正态分布chi_squared_distribution 卡方分布cauchy_distribution 柯西分布fisher_f_distribution 费歇尔F分布student_t_distribution t分布
5.5分段分布相关:
discrete_distribution 离散分布piecewise_constant_distribution 分段常数分布piecewise_linear_distribution 分段线性分布
C++中随机数的生成的更多相关文章
- C语言中随机数的生成
刚好在找这方面的资料,看到了一片不错的,就全文转过来了,省的我以后再找找不到. 在C语言中,可以通过rand函数得到一个“伪随机数”.这个数是一个整数,其值大于等于0且小于等于RAND_MAX.ran ...
- Python中随机数的生成
在Python中要实现随机数的生成,需要使用random模块中randint方法. 其具体实现方法如下: import random a = random.randint(1,20) #(1,20)为 ...
- js中Math.random()生成指定范围数值的随机数
http://www.111cn.net/wy/js-ajax/57062.htm Math.random() 这个方法相信大家都知道,是用来生成随机数的.不过一般的参考手册时却没有说明如何用这个方法 ...
- Python中random模块生成随机数详解
Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...
- objective-c 中随机数的用法 3种:arc4random() 、random()、CCRANDOM_0_1()
oc 中随机数的用法(arc4random() .random().CCRANDOM_0_1() 1).arc4random() 比较精确不需要生成随即种子 使用方法 : 通过arc4random() ...
- JavaScript算法题之–随机数的生成
JavaScript算法题之–随机数的生成 需求描述:从一组有序的数据中生成一组随机并且不重复的数,类似于简单的抽奖程序的实现. 先来生成一个有序的数组: 1 var arr = [], 2 ...
- Linux真随机数的生成
今天看<白帽子讲WEB安全>一书,看到笔者谈到Linux如何实现真随机数生成,感觉非常有用,记录下来 #include<iostream> using namespace st ...
- 将从mysql数据库查询的信息,遍历到List<>以及一些随机数的生成
将从mysql数据库查询的信息,遍历到List<>以及一些随机数的生成. 代码比较乱,但是方法还是对的,大家又需要的选择看,希望对博友 有帮助,欢迎留言分享! public class s ...
- 总结 Swift 中随机数的使用
在我们开发的过程中,时不时地需要产生一些随机数.这里我们总结一下Swift中常用的一些随机数生成函数.这里我们将在Playground中来做些示例演示. 整型随机数 如果我们想要一个整型的随机数,则可 ...
随机推荐
- WCF服务寄宿IIS与Windows服务
WCF是Windows平台下程序间通讯的应用程序框架.整合和 .net Remoting,WebService,Socket的机制,是用来开发windows平台上分布式开发的最佳选择.wcf程序的 ...
- 【转】ATL提供的所有转换宏
在头文件<atlconv.h>中定义了ATL提供的所有转换宏,如: A2CW (LPCSTR) -> (LPCWSTR) A2W (LPCSTR) -> (LPWSTR ...
- python_selenium之第一个自动化脚本
python_selenium之第一个自动化脚本 上一节介绍了xpath的使用,接下来完成第一个自动化脚本 一.步骤: 1. 这里使用火狐浏览器,首先打开火狐浏览器 2. 使浏览器窗口最大化 3.输入 ...
- Xcode7.3打包ipa文件 报错和解决
An error occurred during export. The file “xxx.ipa” couldn’t be opened because there is no such file ...
- HTML5的兴起与4G网络的出现,能否够终止移动端的持续下滑走向
HTML5的兴起与4G网络的出现,能否够终止移动端的持续下滑走向. 每当大家谈起互联网的未来的时候,多半谈及的是云.大数据.SAAS.仿佛要将一切摒弃.而当谈起移动互联网的时候.却坚持觉得NATIVE ...
- UTI iPhone支持依文件后缀名打开应用
本文转载至 http://blog.csdn.net/zaitianaoxiang/article/details/6658492 iphoneapplicationprocessingfileurl ...
- 45、Android事件总线分发库的使用
事件总线分发库EventBus和Otto的简介及对比 什么是事件总线管理: a.将事件放到队列里,用于管理和分发b.保证应用的各个部分之间高效的通信及数据.事件分发c.模块间解耦 Event Bus是 ...
- C#实体类序列化为XML
这两天,应要求做一个C/S的小程序,考虑到程序简洁小巧,存数据的方式不使用数据库,而是直接存入XML文档中保存.为了把复杂实体类里面的属性存入XML,我们可以使用C#有的反射机制,做一个简单的通用工具 ...
- <2013 08 26> 雅思听力相关
近两日开始接触雅思题型,初步做了6套剑桥雅思题的听力部分,完成情况还可以,这里做个总结. 1.听力总共约40左右道题目,30min左右完成,结束后有十分钟把答案写到答题卷上.所有听力材料都只播放一遍! ...
- 我的Android进阶之旅------>RGB颜色查询对照表
因为兼容性问题,色阶板功能只能在IE浏览器中运行 RGB颜色对照表 #FFFFFF #FFFFF0 #FFFFE0 #FFFF00 #FFFAFA #FFFAF0 #FFF ...