opencv-RN*生随机数

opencv-RN*生随机数

C和C++中产生随机数的方法如rand()、srand()等在OpenCV中仍可以用。此外,OpenCV还特地编写了C++的随机数类RNG,C的随机数类CvRNG

说明

  关键字前带cv的都是C里的写法,不带cv的是C++里的写法,比如CvRNG和RNG,其本质都是一样的。

  计算机产生的随机数都是伪随机数,是根据种子seed和特定算法计算出来的。所以,只要种子一定,算法一定,产生的随机数是相同的

  要想产生完全重复的随机数,可以用系统时间做种子。OpenCV中用GetTickCount(),C 中用time()

RNG

RNG类是opencv里C++的随机数产生器。它可产生一个64位的int随机数。目前可按均匀分布和高斯分布产生随机数。随机数的产生采用的是Multiply-With-Carry算法和Ziggurat算法

RNG可以产生3种随机数:

RNG(int seed)         使用种子seed产生一个64位随机整数,默认-1
RNG::uniform( )      产生一个均匀分布的随机数
RNG::gaussian( )    产生一个高斯分布的随机数

RNG::uniform(a, b )  返回一个[a,b)范围的均匀分布的随机数,a,b的数据类型要一致,而且必须是int、float、double中的一种,默认是int。

RNG::gaussian( σ)   返回一个均值为0,标准差为σ的随机数。

                                 如果要产生均值为λ,标准差为σ的随机数,可以λ+ RNG::gaussian( σ)

 

 

 

 

 

 

 

 

 

 

opencv-RN*生随机数

上一篇:Enumerable实现循环。


下一篇:手把手教你配置BSC(币安智能链)网络,只需5分钟