OpenCV之随机类RNG

OpenCV中的RNG类使用Multiply-with-Carry算法实现随机数生成。它提供了多种类型转换操作,如uchar、schar、ushort、short、int、float和double,以获取不同范围的随机数值。此外,还支持在指定范围内生成均匀分布的随机数以及高斯分布的随机数。
摘要由CSDN通过智能技术生成
/*!
   Random Number Generator

   The class implements RNG using Multiply-with-Carry algorithm
*/
class CV_EXPORTS RNG
{
public:
    enum { UNIFORM=0, NORMAL=1 };

	
RNG();//默认构造函数
// inline RNG::RNG() { state = 0xffffffff; }

RNG(uint64 state);//带参数的构造函数,接受一个64位无符号的值。
//inline RNG::RNG(uint64 _state) { state = _state ? _state : 0xffffffff; }


//! updates the state and returns the next 32-bit unsigned integer random number
    unsigned next();
/*
inline unsigned RNG::next()
{
    state = (uint64)(unsigned)state*CV_RNG_COEFF + (unsigned)(state >> 32);
    return (unsigned)state;
}
#define CV_RNG_COEFF 4164903690U
用两个很大的无符号数相乘,乘积结果要转换为64位无符号数,转换的时候两个乘数应该向高精度看起,所以应该也先转换为64位再相乘。把state右移32位得到一个数,把这两个数相加。函数返回一个32位的无符号数,其值为截断前面求得的和。
*/


//以下几个函数是从类到uchar.schar,ushort,short,usinged的显示转换函数
operator uchar();//返回一个8位无符号类型的随机数,把next返回的数截断
//inline RNG::ope
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值