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相关推荐

  1. 实际中常用的一个随机数产生器

    这是刚做完的一小段代码,经测试已经无误,呵呵,这里share给大家看看,有朋友觉得有用,可以拿去用. 这个程序解决的问题如下: 已知一件事物有几种状态,每种状态出现的概率不一样,要求做一个随机数产生器 ...

  2. copyTo函数、随机数产生器 RNG、轮廓的特征矩 Moment、cvGet2D函数

    C++ byte 类型 在头文件 windows.h 中 OpenCV 中,IplImage 所在头文件为 #include<highgui/highgui_c.h> 文章目录 1.cop ...

  3. 随机数产生器(random number generator)

    随机数产生器 随机数产生器一般分为真正的随机和伪随机(pseudorandom number generator (PRNG)).真正的随机则是不可预测的:伪随机则依靠随机数种子和随机算法,是可能被预 ...

  4. 【Laravel笔记】11. Debugbar 调试器

    关于 拾年之璐 微信公众号:知行校园汇,点击查看,欢迎关注 其他平台(点击蓝字可访问): GitHub | Gitee | 哔哩哔哩 | 语雀 | 简书 | 微信小程序 | 知行达摩院 本文专栏:La ...

  5. 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, ...

  6. NRF52832 RNG随机数产生器

    NFC52832内部具有随机数产生器,使用起来非常方便,只有几个寄存器,可以看下图: 每次需要使用随机数的时候只需要启动一次产生器就行了,直接上代码吧: uint8_t GET_RNG(void) { ...

  7. [转]C++11 随机数学习

    相对于C++ 11之前的随机数生成器来说,C++11的随机数生成器是复杂了很多.这是因为相对于之前的只需srand.rand这两函数即可获取随机数来说,C++11提供了太多的选择和东西. 随机数生成算 ...

  8. c++11 随机数random

    c++11提供的<random>实现了随机数库,它通过随机数引擎类(random_number_engines)产生随机数序列,随机数分布类(random-number distribut ...

  9. C++11 随机数学习

    转载请注明出处:http://blog.csdn.net/luotuo44/article/details/33690179 相对于C++ 11之前的随机数生成器来说,C++11的随机数生成器是复杂了 ...

最新文章

  1. mac上安装python详细教程_mac安装python环境
  2. BZOJ 3870: Our happy ending( 状压dp )
  3. win7下安装redies
  4. C++Primer再学习(3)
  5. hdu 1257最少拦截系统 动态规划
  6. boost::math::quadrature::gauss_kronrod用法的测试程序
  7. 计算指数c语言2的n次方,计算2的N次方........有什么错吗?
  8. [vue] vue和angular有什么区别呢?
  9. 计算收益复利的小例子
  10. linux 获取指定目录最大深度(层数)02
  11. mac系统修改idea运行内存
  12. 7.TCP的十一种状态集
  13. Ubuntu16.04关机后自动重启解决方案
  14. 解决Vmware虚拟机startx进入图形界面卡退、白屏、黑屏的问题
  15. 搞计算机的真的不配拥有爱情吗。这是她给我留下的最后一段话
  16. 积分第一中值定理与伏汝兰尼(Froullani)积分
  17. 电脑读卡器,读卡器是什么
  18. 梯度下降算法与随机梯度下降算法:实现波士顿房价问题
  19. IE8中文正式版下载
  20. 第4章第1节:如何往幻灯片中插入指定行和列的表格 [PowerPoint精美幻灯片实战教程]

热门文章

  1. LeetCode 35.搜索插入位置
  2. intel最新的服务器芯片,Intel最新服务器CPU 芯片组Roadmap
  3. Redis 命令整理
  4. http账户密码的截取
  5. gulp 配置自动化前端开发
  6. 最强的篮球队和马尔可夫模型
  7. IT阅读——关于“业务”
  8. GHOST还原教程详细
  9. 从瀑布模型、极限编程到敏捷开发
  10. php 英文小写变大写,PHP英文字母大小写转换函数