一、概念

    1. 一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法迭代产生随机数序列。

    2. 随机数的“种子”就是产生随机数的第一次使用值,机制是通过一个比较复杂函数,将这个种子的值映射到随机数空间的某一个点上,并且产生的随机数均匀地(或者符合正态分布等)散步在空间中,以后产生的随机数都与前一个随机数有关。

    3. RNG : random number generation   随机数生成

(版权声明):参考网络

二、opencv中的函数

1. CvRNG cvRNG(int64 seed);

   使用64位长整形种子,初始化随机数生成器状态。

   cvGetTickCount();

   返回64位长整形的时间数据,在opencv中是为CvRNG设置的专用种子。

2. unsigned cvRandInt(CvRNG* rng);

   返回均匀分布的随机32位无符号整型值,并更新RNG的状态 ; 使用模操作可以获得确定边界的整形数值。

3. double cvRandReal(CvRNG* rng);

   返回均匀分布的随即浮点数,范围在0-1(不含1),并更新RNG的状态。

4. void cvRandArr( CvRNG* rng, CvArr* arr, int dist_type, CvScalar param1, CvScalar param2 );

   用随机数填充数组,并更新RNG的状态

   arr  输出数组

   dist_type  分布类型:   CV_RAND_UNI - 均匀分布  ; CV_RAND_NORMAL - 正态分布 或者 高斯分布

   param1  分布的第一个参数。如果是均匀分布它是随机数范围的闭下边界。如果是正态分布它是随机数的平均值。

   param2  分布的第二个参数。如果是均匀分布它是随机数范围的开上边界。如果是正态分布它是随机数的标准差。