当前位置: 首页 > news >正文

matlab使用教程(11)—创建随机数

        MATLAB 使用算法来生成伪随机数和伪独立数。这些数在数学意义上并非严格随机和独立的,但它们能够通过各种随机和独立统计测试,并且其计算可以重复,方便用于测试或诊断目的。
rand randi randn randperm 函数是创建随机数数组的主要函数。 rng 函数允许您控制生成随机数的种子和算法。

1.随机数函数

        有四种基本随机数函数:rand randi randn randperm rand 函数返回在 0 和 1 之间均匀分布的浮点数。例如:
rng('default')
r1 = rand(1000,1);
        r1 是一个含有均匀分布浮点实数的 1000 x 1 的列向量。 r1 中的所有值均处于开区间 (0, 1) 内。这些值的直方图大致上是扁平形状,这表明采样数相当均匀。
        randi 函数返回离散均匀分布中的 double 整数值。例如,
r2 = randi(10,1000,1);
        r2 是一个包含范围在闭区间 [1, 10] 的离散均匀分布整数值的 1000×1 列向量。这些值的直方图大致上是扁平形状,这表明从 1 到 10 之间采样数相当均匀。
        randn 函数返回标准正态分布中的浮点实数数组。例如:
r3 = randn(1000,1);
        r3 是一个含有标准正态分布数的 1000 x1 的列向量。 r3 的直方图看似大致上均值为 0 且标准差为 1 的正态分布。
        可以使用 randperm 函数创建一个由没有重复值的随机整数值组成的 double 数组。例如,
r4 = randperm(15,5);
        r4 是 1×5 数组,包含从范围 [1, 15] 中随机选择的整数。与可返回包含重复值的数组的 randi 不同,randperm 返回的数组没有重复值。接连调用上述任一函数均可返回不同的结果。这种特性适合用于创建几个不同的随机值数组。

2.随机数生成器

        MATLAB 提供几个生成器算法选项,下表对其进行了总结。
        使用 rng 函数可设置 rand randi randn randperm 函数使用的种子和生成器。例如,
rng(0,'twister') 将生成器重置为其默认状态。

3.随机数的数据类型

        rand randn 函数默认情况下会生成双精度类型的值。
rng('default')
A = rand(1,5);
class(A)
ans = 'double'
        要将类显式指定为双精度类型:
rng('default')
B = rand(1,5,'double');
class(B)
ans = 'double'
isequal(A,B)
ans =
1
        rand randn 也可以生成单精度类型的值。
rng('default')
A = rand(1,5,'single');
class(A)
ans = 'single'
        这些值与转换前一示例中的双精度值相同。无论返回哪种类的值,这些函数获取的随机流都会以相同方式增加。
A,B
A =
0.8147 0.9058 0.1270 0.9134 0.6324
B =
0.8147 0.9058 0.1270 0.9134 0.6324
        randi 既支持整数类型,又支持单精度或双精度类型。
A = randi([1 10],1,5,'double');
class(A)
ans = 'double'
B = randi([1 10],1,5,'uint8');
class(B)
ans = 'uint8'

4.特定范围内的随机数

        本示例显示如何基于开区间 (50, 100) 内的均匀分布创建随机浮点数组。在默认情况下,rand 返回均匀分布的归一化值(0 和 1 之间)。要改变分布的范围(a、b),应将各值乘以新范围的宽度(b – a),然后用 a 替换各值。首先,初始化随机数生成器,以使本示例中的结果具备可重复性。
rng(0,'twister');
创建一个 1000 个随机值的向量。使用 rand 函数从开区间 (50,100) 抽取均匀分布的值。
a = 50;
b = 100;
r = (b-a).*rand(1000,1) + a;
验证 r 中的数值是否在指定范围内。
r_range = [min(r) max(r)]
r_range =
50.0261 99.9746
        结果是处于开区间(50、100)内。 注意 a 和 b 的某些组合在理论上可使得到的结果包括 a 或 b。在实际中,这种情况极难出现。

5.随机整数

        此示例说明了如何根据一组数字 –10、–9、...、9、10 的离散均匀分布创建随机整数值数组。
最简单的 randi 语法将返回 1 与指定值 imax 之间的双精度整数值。要指定其他范围,请结合使用 imin imax 参数。首先,初始化随机数生成器,以使本示例中的结果具备可重复性。
rng(0,'twister');

        基于数字集 -10、-9、...、9、10 的离散均匀分布创建 1×1000 随机整数值数组。使用语法

randi([imin
imax],m,n)。
r = randi([-10 10],1,1000);
        验证 r 中的值是否在指定范围内。
[rmin,rmax] = bounds(r)
rmin = -10
rmax = 10

6.具有特定均值和方差的正态分布随机数

        此示例说明如何基于均值为 500 和方差为 25 的正态分布创建随机浮点数组。randn 函数返回一个均值为 0 和方差为 1 的正态分布随机数样本。随机变量的一般理论规定,如果 x 是随机变量,其均值是u_x 且方差是\sigma _x^2   ,则由 y = ax + b , (其中 a 和 b 为常量)定义的随机变量 y 有均值
u_{y}=au_{x}+ b和方差\sigma _y^2=a^2\sigma _x^2   . 根据此概念,可获得均值为 500 和方差为 25 的正态分布随机数样本。首先,初始化随机数生成器,以使本示例中的结果具备可重复性。
rng(0,'twister');
        基于均值为 500 且标准差为 5 的正态分布创建包含 1000 个随机值的向量。
a = 5;
b = 500;
y = a.*randn(1000,1) + b;
        计算样本均值、标准差和方差。
stats = [mean(y) std(y) var(y)]
stats = 1×3
499.8368 4.9948 24.9483
        均值和方差并非恰好为 500 和 25,因为它们是从分布采样计算得出的。

7.球体内的随机数

        此示例说明如何在球体内创建随机点。本例中的球体以原点为中心,半径为3。在球体内创建点的方法之一是在球面坐标中指定这些点。然后可以将其转换为笛卡尔坐标进行绘图。首先,初始化随机数生成器,以使本示例中的结果具备可重复性。
rng(0,'twister')
        计算球体中各个点的仰角。这些值在开区间 ( − π /2, π /2) 内,但不是均匀分布的。
rvals = 2*rand(1000,1)-1;
elevation = asin(rvals);
        为球体中的各个点创建方位角。这些值在开区间 (0, 2 π ) 内均匀分布。
azimuth = 2*pi*rand(1000,1);
        为球体中的各个点创建半径值。这些值在开区间 (0, 3) 内,但不是均匀分布的。
radii = 3*(rand(1000,1).^(1/3));
        转换为笛卡尔坐标并绘制结果。
[x,y,z] = sph2cart(azimuth,elevation,radii);
figure
plot3(x,y,z,'.')
axis equal

        如果需要将随机数置于球体表面上,则指定一个常量半径值作为 sph2cart 的最后一个输入参数。在本例中,该值为 3
[x,y,z] = sph2cart(azimuth,elevation,3);

 

相关文章:

matlab使用教程(11)—创建随机数

MATLAB 使用算法来生成伪随机数和伪独立数。这些数在数学意义上并非严格随机和独立的,但它们能够通过各种随机和独立统计测试,并且其计算可以重复,方便用于测试或诊断目的。 rand 、 randi 、 randn 和 randperm 函数是创建随机数数组的主要…...

一、安全世界观

文章目录 1、 Web安全简史1.1 中国黑客简史1.2 黑客技术的发展历程1.3 web安全的兴起 2、黑帽子、白帽子3、安全的本质4、安全三要素5、如何实施安全评估5.1 资产等级划分5.2 威胁分析5.3 风险分析5.4 设计安全方案 6、白帽子兵法6.1 Secure By Default6.2 纵深防御原则6.3 数据…...

爬虫014_文件操作_打开关闭_读写_序列化_反序列化---python工作笔记033

报错,没有指定路径,没有指定路径无法创建文件 这样可以在当前目录下创建一个可写的文件 可以看到找到刚才生成的文件,看看内容...

企业前后端分离软件架构如何设计?

企业前后端分离软件架构的设计涉及到前端和后端的独立性、通信方式、数据流管理等多个方面。下面我将为你介绍一个常见的前后端分离软件架构设计: 1、前端层: 框架选择:选择适合项目需求的前端框架,例如React、Vue.js、Angular等…...

生产执行MES系统:提升企业灵活性和响应速度的关键利器

在竞争激烈的市场环境下,企业需要不断提高其灵活性和响应速度,以适应快速变化的需求和市场动态。生产执行MES(Manufacturing Execution System)系统作为信息技术的重要应用,为企业提供了强大的工具和平台,能…...

什么是分布式系统,如何学习分布式系统

正文 虽然本人在前面也写过好几篇分布式系统相关的文章,主要包CAP理论,分布式储存与分布式事务,但对于分布式系统,并没有一个跟清晰的概念。分布式系统涉及到很多的技术、理论与协议,很多人也说,分布式系统…...

数据库锁表 Lock wait timeout exceeded; try restarting transaction

锁等待超时 Lock wait timeout exceeded; try restarting transaction,是当前事务在等待其它事务释放锁资源造成的 解决办法 1、数据库中执行如下sql,查看当前数据库的线程情况: show full PROCESSLIST2、再到 INNODB_TRX 事务表中查看&…...

Oracle 知识篇+分区表上的索引由global改为local注意事项

★ 知识点 二、知识点 Local型索引有如下优点 1.Only one index partition must be rebuilt when a maintenance operation other than SPLIT PARTITION or ADD PARTITION is performed on an underlying table partition. 2.The duration of a partition maintenance opera…...

基于2.4G RF开发的无线游戏手柄解决方案

平时喜欢玩游戏的朋友,肯定知道键鼠在某些类型的游戏适配和操作方面,不如手柄。作为一个游戏爱好者,还得配上一个游戏手柄才行。比如动作和格斗、体育游戏,由于手柄更合理的摇杆位置和按键布局,操作起来也是得心应手。…...

Python之一:基础信息

#查看pip版本,cmd命令窗口(注意环境变量%PYTHON_HOME%\scripts,是否在path中) pip --version #安装pip,cmd命令窗口 python -m pip install pip #查看已安装模块,cmd命令窗口 python -m pydoc modules #查看…...

K8S系列文章之 Traefik快速入门

traefik 与 nginx 一样,是一款优秀的反向代理工具,或者叫 Edge Router。至于使用它的原因则基于以下几点 无须重启即可更新配置自动的服务发现与负载均衡与 docker 的完美集成,基于 container label 的配置漂亮的 dashboard 界面metrics 的支…...

RabbitMQ在CentOS下的安装

RabbitMQ的版本是3.8.2 1.环境配置:CentOs 7.6以上版本,我的版本是7.9,不要对yum换源,否则可能会安装失败。 echo "export LC_ALLen_US.UTF-8" >> /etc/profile source /etc/profile 以上命令,是…...

为什么金鸣识别不做成离线版?

来百度APP畅享高清图片 在众多的用户咨询中,金鸣识别客服常常会被用户问及为何不做成离线版的问题,下面我就在这里跟大伙说说其中的原因吧。 离线版的OCR准确率相对于网络版可能会较低,主要有以下几个原因: 1. 数据量和模型更新…...

什么是面向对象

目录 对象: 举例: 封装: 好处: 继承: 多态: 类和对象之间的关系 对象: 把一个东西看成对象,我们就可以孤立的审查它的性质,行为,进而研究它和其他对象的关系。 对象是一个应用系统中用…...

记一次前端直接上传图片到oss报错

前端直接上传图片到阿里云oss,相关过程官网和网上资料已经很详细,不做赘述。 但这个过程比较复杂,前后端对接过程中很容易出现报错,这里遇到了以下报错,不容易排查。 请求显示net::ERR_NAME_NOT_RESOLVED错误,catch输…...

数据库管理-第九十八期 统计信息是多么重要(20230812)

数据库管理-第九十八期 统计信息是多么重要(20230812) 每天通过EM可视化巡视数据库执行情况,发现那些执行比较长的语句要么是索引没用上、要么是索引没建。但更多的是发现执行计划中“估计的行数”与“行数”(执行的)…...

山西电力市场日前价格预测【2023-08-13】

日前价格预测 预测明日(2023-08-13)山西电力市场全天平均日前电价为351.64元/MWh。其中,最高日前电价为404.00元/MWh,预计出现在19: 30。最低日前电价为306.39元/MWh,预计出现在13: 15。 价差方向预测 1: 实…...

AtCoder Beginner Contest 313D题题解

文章目录 [ Odd or Even](https://atcoder.jp/contests/abc313/tasks/abc313_d)问题建模问题分析1.分析每次查询的作用2.利用异或运算的性质设计查询方法 Odd or Even 问题建模 有n个数,每个数为0或者1,最多可以进行n次询问,每次询问选择k个…...

mybatis 中的<![CDATA[ ]]>用法及说明

<![CDATA[ ]]>作用 <![CDATA[ ]]> 在mybatis、ibatis等书写SQL的xml中比较常见&#xff0c;是一种XML语法&#xff0c;他的作用是 可以忽略xml的转义&#xff08;在该标签中的语句和字符原本是什么样的&#xff0c;在拼接成SQL后还是什么样的&#xff09; 使用&a…...

从零学算法34

34.给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1&#xff1…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤&#xff1a; 第一步&#xff1a; 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为&#xff1a; // 改为 v…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...