您的位置:首页 > 运维架构

OpenCV中随机数的生成

2015-03-22 21:19 225 查看
产生随机数有很多方法

首先是自己构造RNG的方法

RNG()

RNG(uint16 state)

后一个带state参数的构造器可以指定初始状态,类似C++中srand的种子

如果state=0,则回到前一个默认构造器

构造好之后可以使用RNG对象很多方法来获取随机数

比较常用的比如

//均匀分布,高斯分布的随机数

RNG::uniform
RNG::gaussian

//均匀分布或高斯分布填充矩阵
RNG::fill

//括号运算符获取下一个整型
unsigned int RNG::operator()

//强制类型转换获取下一个随机数

RNG::operator ushort()

RNG::operator double()

……

其次是使用theRNG()获取默认的RNG对象
经测试,theRNG()与默认构造器RNG()构造出来的对象是一样的

不构造RNG对象直接使用

randu

randn

两个函数获取或填充矩阵时,使用的就是默认的RNG对象

使用默认RNG对象的一个特点是,每次运行时构造出来的随机数都是一样的
这个有利有弊,每次构造出来的随机数一样有助于程序测试

如果要求每次构造出来的不一样,可以自己构造RNG对象,并用当前时间作为state

RNG rng(time(NULL))

使用time函数记得#include <time.h>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OpenCV 随机数