(转)随机数产生器RNG
来源:互联网 发布:网络流行用语 编辑:程序博客网 时间:2024/04/29 16:03
(转自 http://blog.csdn.net/yang_xian521/article/details/6931385)
用OpenCV做算法的朋友们肯定为随机数烦恼过,新版本一直支持随机数产生器啦,而且还继续支持之前版本的c格式的函数,不过与时俱进,我这里介绍C++的RNG类。它可以压缩一个64位的i整数并可以得到scalar和array的随机数。目前的版本支持均匀分布随机数和Gaussian分布随机数。随机数的产生采用的是Multiply-With-Carry算法和Ziggurat算法。
其构造函数的初始化可以传入一个64位的整型参数作为随机数产生器的初值。next可以取出下一个随机数,uniform函数可以返回指定范围的随机数,gaussian函数返回一个高斯随机数,fill则用随机数填充矩阵。
这里介绍一个uniform的使用事项,就是比如利用它产生0~1的随机数的问题,具体代码如下:
- RNG rng;
- // always produces 0
- double a = rng.uniform(0, 1);
- // produces double from [0, 1)
- double a1 = rng.uniform((double)0, (double)1);
- // produces float from [0, 1)
- double b = rng.uniform(0.f, 1.f);
- // produces double from [0, 1)
- double c = rng.uniform(0., 1.);
- // may cause compiler error because of ambiguity:
- // RNG::uniform(0, (int)0.999999)? or RNG::uniform((double)0, 0.99999)?
- double d = rng.uniform(0, 0.999999);
RNG rng;// always produces 0double a = rng.uniform(0, 1);// produces double from [0, 1)double a1 = rng.uniform((double)0, (double)1);// produces float from [0, 1)double b = rng.uniform(0.f, 1.f);// produces double from [0, 1)double c = rng.uniform(0., 1.);// may cause compiler error because of ambiguity:// RNG::uniform(0, (int)0.999999)? or RNG::uniform((double)0, 0.99999)?double d = rng.uniform(0, 0.999999);
就是不能写成rng.uniform( 0 , 1),因为输入为int型参数,会调用uniform(int,int),只能产生0。请大家注意使用^_^
还有一些随机数相关的函数,比如randu可以产生一个均匀分布的随机数或者矩阵,randn可以产生一个正态分布的随机数,randShuffle可以随机打乱矩阵元素
再简单介绍一下c版本的随机数产生器的相关函数,有cvRNG、cvRandArr、cvRandInt、cvRandReal
- (转)随机数产生器RNG
- 随机数产生器RNG
- 随机数产生器RNG
- NRF52832 RNG随机数产生器
- 随机数产生器RNG
- opencv学习笔记-种子随机数产生器RNG
- OpenCV学习笔记(十二)——随机数产生器RNG
- OpenCV学习笔记——随机数产生器RNG
- OpenCV学习笔记(十二)——随机数产生器RNG
- 随机数产生器
- 随机数产生器
- opencv随机数发生器RNG
- OpenCV 随机数生成器 RNG
- NS2中的随机数产生器
- NS-2随机数产生器
- ns2中随机数产生器
- 内核随机数产生器
- linux内核随机数产生器
- struct stat结构体的详解和用法
- 2013年11月20日 第四章课上代码
- Ril.java分析
- Outline of PhD Course of Machine Learning in CMU
- 红外遥控协议-NEC协议
- (转)随机数产生器RNG
- SqlServer compact 与sqlserver的差异
- java积累基础
- Struts2笔记_1建工程_传参方式
- jboss eap6.1(4)(部署应用)
- 通过配置php来屏蔽PHP错误
- 用C语言描述女人
- 网络协议学习方法和工具
- 读取文件并追加