OpenCV中的随机数生成

产生随机数有很多方法
首先是自己构造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

转载于:https://www.cnblogs.com/cloudfox/p/4199705.html

你可能感兴趣的:(OpenCV中的随机数生成)