c++11随机数产生器default_random_engine
c/c++老版本的rand()存在一定的问题,在转换rand随机数的范围,类型或者分布时,常常会引入非随机性。
定义在<random> 中的随机数库通过一组协作类来解决这类问题:随机数引擎 和 随机数分布类
一个给定的随机数发生器一直会生成相同的随机数序列。一个函数如果定义了局部的随机数发生器,应该将(引擎和分布对象)定义为 static 的。否则每次调用函数都会生成相同的序列。
随机数发生器会生成相同的随机数序列这一个特性在调试 中很有用。
一旦我们调试完毕,我们通常希望每次运行程序都会生成不同的随机结果,可以通过提供一个 种子 来达到这一目的。
有两种设置种子的方式:
1. 创建引擎对象时提供种子 Engine e(s);
2. 调用引擎的 seed 成员 e.seed(s);
最常用的是调用系统函数 time , 定义在 <ctime> ,单位是秒计
default_random_engine e(time(0)); //稍微随机些种子
#include <vector>
#include <iostream>
#include <random>
#include <ctime>std::vector<unsigned> randomGenerate(const unsigned low, const unsigned high)
{static std::default_random_engine e(time(0));static std::uniform_int_distribution<unsigned> u(low, high);std::vector<unsigned> vec;for (int i = 0; i < 10; i++)vec.push_back(u(e));return vec;
}int main()
{for (int i = 0; i < 10; i++) {std::vector<unsigned> vec = randomGenerate(0, 30);for (auto &i : vec)std::cout << i << " ";std::cout << std::endl;}return 0;
}
或者可以用高斯正态分布
inline float NormalRandom(float mu = 0.f, float sigma = 1.f)
{static std::default_random_engine generator;static std::normal_distribution<float> distribution(mu, sigma);//gaussin distributionreturn distribution(generator);
}
c++11随机数产生器default_random_engine相关推荐
- 实际中常用的一个随机数产生器
这是刚做完的一小段代码,经测试已经无误,呵呵,这里share给大家看看,有朋友觉得有用,可以拿去用. 这个程序解决的问题如下: 已知一件事物有几种状态,每种状态出现的概率不一样,要求做一个随机数产生器 ...
- copyTo函数、随机数产生器 RNG、轮廓的特征矩 Moment、cvGet2D函数
C++ byte 类型 在头文件 windows.h 中 OpenCV 中,IplImage 所在头文件为 #include<highgui/highgui_c.h> 文章目录 1.cop ...
- 随机数产生器(random number generator)
随机数产生器 随机数产生器一般分为真正的随机和伪随机(pseudorandom number generator (PRNG)).真正的随机则是不可预测的:伪随机则依靠随机数种子和随机算法,是可能被预 ...
- 【Laravel笔记】11. Debugbar 调试器
关于 拾年之璐 微信公众号:知行校园汇,点击查看,欢迎关注 其他平台(点击蓝字可访问): GitHub | Gitee | 哔哩哔哩 | 语雀 | 简书 | 微信小程序 | 知行达摩院 本文专栏:La ...
- OpenCV图像处理学习六,像素操作,使用line,ellipse,ellipse,rectangle,fillPoly函数绘制线、矩形、圆、椭圆等基本图形以及C++随机数产生器RNG的应用
一.Point与Scalar 使用cv::Point与cv::Scalar Point表示2D平面上一个点x,y Point p; p.x = 10; p.y = 8; 或者 p = Pont(10, ...
- NRF52832 RNG随机数产生器
NFC52832内部具有随机数产生器,使用起来非常方便,只有几个寄存器,可以看下图: 每次需要使用随机数的时候只需要启动一次产生器就行了,直接上代码吧: uint8_t GET_RNG(void) { ...
- [转]C++11 随机数学习
相对于C++ 11之前的随机数生成器来说,C++11的随机数生成器是复杂了很多.这是因为相对于之前的只需srand.rand这两函数即可获取随机数来说,C++11提供了太多的选择和东西. 随机数生成算 ...
- c++11 随机数random
c++11提供的<random>实现了随机数库,它通过随机数引擎类(random_number_engines)产生随机数序列,随机数分布类(random-number distribut ...
- C++11 随机数学习
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/33690179 相对于C++ 11之前的随机数生成器来说,C++11的随机数生成器是复杂了 ...
最新文章
- mac上安装python详细教程_mac安装python环境
- BZOJ 3870: Our happy ending( 状压dp )
- win7下安装redies
- C++Primer再学习(3)
- hdu 1257最少拦截系统 动态规划
- boost::math::quadrature::gauss_kronrod用法的测试程序
- 计算指数c语言2的n次方,计算2的N次方........有什么错吗?
- [vue] vue和angular有什么区别呢?
- 计算收益复利的小例子
- linux 获取指定目录最大深度(层数)02
- mac系统修改idea运行内存
- 7.TCP的十一种状态集
- Ubuntu16.04关机后自动重启解决方案
- 解决Vmware虚拟机startx进入图形界面卡退、白屏、黑屏的问题
- 搞计算机的真的不配拥有爱情吗。这是她给我留下的最后一段话
- 积分第一中值定理与伏汝兰尼(Froullani)积分
- 电脑读卡器,读卡器是什么
- 梯度下降算法与随机梯度下降算法:实现波士顿房价问题
- IE8中文正式版下载
- 第4章第1节:如何往幻灯片中插入指定行和列的表格 [PowerPoint精美幻灯片实战教程]