RNG类是OpenCV中的一个基本随机数生成工具

这篇具有很好参考价值的文章主要介绍了RNG类是OpenCV中的一个基本随机数生成工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RNG类是OpenCV中的一个基本随机数生成工具

在OpenCV中,RNG类是用于生成随机数的伪随机数生成器(Pseudo-Random Number Generator),它可以用于生成各种类型的随机数,如整数、浮点数和随机颜色,这个类位于 opencv2/core/types.hpp头文件中;

RNG可以产生3种随机数

  • RNG(int seed) 使用种子seed产生一个64位随机整数,seed默认-1
  • RNG::uniform( ) 产生一个均匀分布的随机数
  • RNG::gaussian( ) 产生一个高斯分布(又叫正态分布)的随机数
1、初始化一个RNG对象
cv::RNG rng;  // 默认情况下随机数种子seed=-1,也可以指定随机数种子RNG rng(12345)
	      // rng既是一个RNG对象,也是一个随机整数
// 得到一个64位随机整数
int N1 = rng;
2、产生一个均匀分布的随机数
(1)产生一个[min_value, max_value)范围的均匀分布的整数
int randomInt = rng.uniform(min_value, max_value);
(2)产生一个[min_value, max_value)范围的均匀分布的浮点数
double randomDouble = rng.uniform(min_value, max_value);
示例:
//总是得到double类型数据0.000000,因为会调用uniform(int,int),只会取整数,所以只产生0
double N1a = rng.uniform(0,1);

//产生[0,1)范围内均匀分布的double类型数据
double N1b = rng.uniform((double)0,(double)1);
 
//产生[0,1)范围内均匀分布的float类型数据,注意被自动转换为double了。
double N1c = rng.uniform(0.f,1.f);
 
//产生[0,1)范围内均匀分布的double类型数据。
double N1d = rng.uniform(0.,1.);

3、产生一个高斯分布(又叫正态分布)的随机数
// 产生一个均值为0,标准差为1的正态分布的随机数
double g = rng.gaussian(1.0);
// 产生一个均值为0,标准差为2的正态分布的随机数  
double N1g = rng.gaussian(2); 

4、获取下一个随机数

上面一次只能返回一个随机数,实际上系统已经生成一个随机数组,如果我们要连续获得随机数,没有必要重新定义一个RNG类,只需要取出随机数组的下一个随机数即可;文章来源地址https://www.toymoban.com/news/detail-681850.html

  • RNG:: next 返回下一个64位随机整数
  • RNG:: operator 返回下一个指定类型的随机数
示例:
RNG rng;
// 得到一个64位随机整数
int N1 = rng;
int N2 = rng.next();                    // 返回下一个随机整数,即N1.next();
 
//返回下一个指定类型的随机数
int N2a = rng.operator uchar();         //返回下一个无符号字符数
int N2b = rng.operator schar();         //返回下一个有符号字符数
int N2c = rng.operator ushort();        //返回下一个无符号短型
int N2d = rng.operator short int();     //返回下一个短整型数
int N2e = rng.operator int();           //返回下一个整型数
int N2f = rng.operator unsigned int();  //返回下一个无符号整型数
int N2g = rng.operator float();         //返回下一个浮点数
int N2h = rng.operator double();        //返回下一个double型数
int N2i = rng.operator ()();            //和rng.next( )等价
int N2j = rng.operator ()(100);         //返回[0,100)范围内的随机数
5、实例演示
#include <opencv2\opencv.hpp>
#include <iostream>
#include <demo.h>

using namespace cv;
using namespace std;

int main() {

	system("chcp 65001");

	Mat canvas = Mat::zeros(Size(512, 512), CV_8UC3);
	int w = canvas.cols;
	int h = canvas.rows;
	RNG rng(12345);
	while (true) {
		int c = waitKey(10);
		if (c == 27) { // 退出
			break;
		}
		int x1 = rng.uniform(0, w);
		int y1 = rng.uniform(0, h);
		int x2 = rng.uniform(0, w);
		int y2 = rng.uniform(0, h);
		int b = rng.uniform(0, 255);
		int g = rng.uniform(0, 255);
		int r = rng.uniform(0, 255);
		canvas = Scalar(0, 0, 0);
		line(canvas, Point(x1, y1), Point(x2, y2), Scalar(b, g, r), 1, LINE_AA, 0);
		imshow("随机绘制演示", canvas);
	}

	waitKey();
	destroyAllWindows();
	return 0;
}

到了这里,关于RNG类是OpenCV中的一个基本随机数生成工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python生成随机数的一个标准库-random

    Random库Python中用于生成随机数的一个标准库。计算机没有办法产生真正的随机数,但它可以产生伪随机数。 伪随机数是计算机按照一定的运算规则产生的一些数据,只不过这些数据表现为随机数的形式。计算机中采用梅森旋转算法生成为随机序列,序列中的每一个元素就是伪

    2023年04月26日
    浏览(43)
  • 商用密码产品认证中的随机数(二)

    现行密码标准体系中包括三类随机数相关标准:框架类标准、设计类标准和检测类标准。 框架类标准为GM/T 0103《随机数发生器总体框架》 设计类标准为用于指导随机数发生器的技术设计,包括GM/T 0078《密码随机数生成模块设计指南》、《物理混沌随机数发生器设计指南》和

    2024年02月05日
    浏览(52)
  • Hadoop中的加密解密机制——伪随机数生成算法介绍

    作者:禅与计算机程序设计艺术 Hadoop作为当下最流行的大数据处理平台,提供了丰富的功能支持,如海量数据的存储、分析与计算。其中一个重要的环节就是数据安全问题。无论是存储集群还是计算集群,都需要提供数据保护措施来确保数据的完整性和可用性。今天我将介绍

    2024年02月06日
    浏览(53)
  • 按键消抖与仿真源文件中的随机数

    由于按键的机械弹簧结构,在按键按下与释放的过程中,存在类似接触不良,断断续续的信号,导致电平信号的抖动。 在C程序中一般通过延时函数解决,根据按键速度,一般延时20ms之后再重新对引脚判断是否真正按下,来解决抖动问题。 在FPGA中可以通过对信号的快速精准

    2024年02月10日
    浏览(108)
  • 【Python入门知识】NumPy 中的随机数及ufuncs函数

    前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 什么是随机数? 随机数并不意味着每次都有不同的数字。随机意味着无法在逻辑上预测的事物。 伪随机和真随机 计算机在程序上工作,程序是权威的指令集。 因此,这意味着必须有某种算法来生成随机数。 如果存在生成随机数的程

    2024年02月03日
    浏览(96)
  • Opencv中的RNG-随机绘图

    在OpenCV中, RNG 是一个 随机数生成器类 ,用于生成各种类型的随机数,包括均匀分布或高斯分布的整数和浮点数。RNG类的实例化时可以接受一个无符号整数作为 种子值 ,这个种子值决定了随机数生成序列的起点,相同的种子值将产生相同的随机数序列。这 在需要可重复的实

    2024年02月21日
    浏览(36)
  • 【Python入门第五十三天】Python丨NumPy 中的随机数

    随机数并不意味着每次都有不同的数字。随机意味着无法在逻辑上预测的事物。 计算机在程序上工作,程序是权威的指令集。因此,这意味着必须有某种算法来生成随机数。 如果存在生成随机数的程序,则可以预测它,因此它就不是真正的随机数。 通过生成算法生成的随机

    2023年04月25日
    浏览(37)
  • 第03章_流程控制语句(顺序结构,分支语句,循环语句,break,continue,Scanner,如何获取一个随机数)

    流程控制语句是用来控制程序中各 语句执行顺序 的语句,可以把语句组合成能 完成一定功能 的小逻辑模块。 程序设计中规定的 三种 流程结构,即: 顺序结构 程序从上到下逐行地执行,中间没有任何判断和跳转。 分支结构 根据条件,选择性地执行某段代码。 有 if…els

    2024年01月22日
    浏览(55)
  • JS - 生成随机数的方法汇总(不同范围、类型的随机数)

    (1)使用 random() 方法可以返回一个介于 0 ~ 1 之间的伪随机数(包括 0,不包括 1)。 (2)下面是一个测试样例 (1)这种最简单,因为和 random 的特点保持一致。只需使用如下公式即可: (2)比如下面生成 [10,15) 范围内的随机浮点数。 因为 random 的特点,要取得这几个区间

    2023年04月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包