其他分享
首页 > 其他分享> > opencv-RNG产生随机数

opencv-RNG产生随机数

作者:互联网

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( σ)

 

 

 

 

 

 

 

 

 

 

标签:产生,RNG,gaussian,C++,opencv,int,随机数
来源: https://www.cnblogs.com/liming19680104/p/15575365.html