随机数与随机颜色

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

1.1.1 产生一个随机数

RNG可以产生3种随机数
RNG(int seed)         使用种子seed产生一个64位随机整数,默认-1

  随机数种子

    

众所周知,所谓随机数其实是伪随机数,所谓的‘伪’,意思是这些数其实是有规律的,只不过因为算法规律太复杂,很难看出来。

所谓巧妇难为无米之炊,再厉害的算法,没有一个初始值,它也不可能凭空造出一系列随机数来,诶,我们说的种子就是这个初始值。

random随机数是这样生成的:我们将这套复杂的算法(是叫随机数生成器吧)看成一个黑盒,把我们准备好的种子扔进去,它会返给你两个东西,一个是你想要的随机数,另一个是保证能生成下一个随机数的新的种子,把新的种子放进黑盒,又得到一个新的随机数和一个新的种子,从此在生成随机数的路上越走越远。



RNG::uniform( )      产生一个均匀分布的随机数
RNG::gaussian( )    产生一个高斯分布的随机数

 

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

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

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

随机颜色与随机数

   先创建随机数对象

  再使用对象.uniform(,)

 

posted @ 2021-04-04 19:48  KAVEI  阅读(195)  评论(0编辑  收藏  举报