数学建模-Matlab中randperm函数及其双重进阶版

1.randperm函数的用法

(1)这种用法就是参数只有一个数字,代表的含义就是随机排列之后打印输出;

我们举例的数字是4,就会把1到4这4个数字随机打乱之后随机输出,每次运行结果都不一样

所有可能的情况是n的阶乘,这里的n是4,所以一共是有24种随机的生成结果;

(2)下面的是函数里面有2个参数,第一个还是生成的数据范围,第二个是打印输出的数据的个数,这个地方的第一个参数是10,表示生成的数据范围是1到10这个区间,第二个参数是3,表示选择3个数据进行打印:

这里我们介绍一下这个函数的应用:

(3)旅行商问题

这个问题就是一个经典的旅行商问题,我们这个地方的设计路线只是其中的一小部分(这个问题还涉及到约束条件,以及最优解等等,我们这里不做讨论,只是生成一条随机的路线);

因为旅行商问题要求的是我们从随便的一个城市出发,但是最后要回到原来的位置,我们使用randperm函数生成的数据是不会相同的,因此我们把这个数组和数组里面的第一个元素在重新赋值给route就实现了第一个元素和最后一个元素相同(出发的城市和最后返回的城市一样);

(4)随机挑选学号

我们使用randperm函数,从1~50之间随机生成四个数字作为索引,根据所以找到number这个向量里面的元素(这个也是我们经常使用的);

(5)抽奖问题

我们使用函数生成下标,numel函数是求向量的大小(向量里面的元素的个数);

(6)扑克牌炸弹问题

首先介绍一下一个新的函数:ranelem函数,这个函数就是重复拷贝:

我们这道扑克牌问题,首先要生成54张扑克牌,然后进行其他的操作,我们使用repelem函数就可以生成54张扑克牌:

我们解释一下上面的代码:1~13的数字每个重复4次,再加上14,15放在一个新的向量里面,就构成了54张扑克牌。


接下来我们需要给地主20张牌,两个农民17*2=34张牌,一共就是我们的54张扑克牌;

428行代码的作用就是随机打乱,得到对应的下标;

429行就是根据下表找到对应的牌,c就是一副打乱的完整的扑克牌;

dz就是地主的首个拼音字母,我们取出前面的20个然后进行排序,这个就是地主手里面的牌

nm就是17张牌两个农民分别取出21-37和38-54的17张牌,经过排序就可以看到农民的牌;

434是进行检验的,检验三个人手里的牌和我们的所有的牌一样,返回logical说明是没有问题的


接下来我们判断地主的牌里面是否有炸弹:

(1)第一种就是判断是否有双王:

 ismember同样是一个函数,这个函数有多个返回值,这个函数在这里就会有2个返回值,在这里就是在dz(地主的牌里面),看看是否有14(小王)15(大王),如果存在就会返回1,不存在就会返回0,我们这里的返回值1和0表示的是逐次进行的随机测试没有大王15,但是有小王14,我们需判断的是否同时拥有14,15,因此我们使用all函数,如果两个返回值都是1,表示大小王都有,此时就是有炸弹,否则就是没有;

(2)第二种就是判断是否有4张相同的牌:

下面的是两种判断方法:

****第一种方法:

(1)先把地主的矩阵转置,然后看是否等于1:15,这个意思就是dz'变成了列向量,

(2)上面的那个20*15的矩阵是一列一列看的,让1和ans这个20*1的矩阵进行比较,如果这个ans里面的20个数有和1相同的,显示就是1,不相同就会显示0,20*15矩阵的第一列前面的三个是1,说明20*1的矩阵里面前面的三个和1相同,以此类推,20*15的矩阵里面第二列第四个数字是0,表明列向量里面的第四个数字是2,按照这个逻辑我们就可以得到所有的情况;

(3)每一列的结果最多有4个1,因为1~15里面的每个数字和我们的列向量进行比较,相同的牌就四张,我们进行求和就是给每一列求和,如果结果是4,表示有4张一样的牌在地主的手里;

求和发现每张牌的个数,没有4出现,则没有炸弹,所以find返回的是空向量;

****第二种利用众数

这个就是众数mode,他有3个返回值,第一个A表示众数是谁,B表示这个众数出现了几次,C表示一个元胞数组,因为如果是多个众数的话,就会只返回最小的,第三个参数就会把所有的都显示出来,以元胞数组的形式;B=4表示出现4次,ans=1就是说明有一个数字出现四次,A=12,可见上面的方法和我们的众数的方法显示的结果都是12;

2.randperm函数进阶版randsample函数

(1)基本介绍

这个用法和randperm基本一样:

从1~10这个范围里的数字中抽取三个:

第一个参数是向量,用法也是一样的:

(2)不同情况的抽取:

true:放回(一个数次可以出现多次)-----false:不放回(一个数字只能出现一次)

这里我们测试一下,第三个参数是true的时候,就可以不放回(一个数字出现两次),这里可以结合我们高中是学习的排列组合理解(拿球问题,放回和不放回,本质是一样的);

(3)带有权重的放回抽取:

权重就是被选中的概率:我们下面的例子是给了一个含有10个元素的向量,w表示对应的权重,权重的求法就是自己对应的数字除以所有的和,下面的w是1~10,10个数字里面抽三个,1的概率就是1除以所有的和(1~10的和),以此类推,越往后的概率就越大,打印的结果也证实了;

(4)示例

下面就是解决的代码:1 2 3分别代表的是吃饭,唱歌和看电影,w里面的是对应的概率,1*20的矩阵就表示第一个同学是第二个选择(sing),第二个同学是第一种选择(eat),以此类推可得;下面的find(y==1)就是去吃饭的编号,==2就是去唱歌,以此类推即可得到。

3.randsample函数进阶版datasample

(1)随机抽取矩阵的行

函数的第一个参数就是从那里抽取,第二个抽取几行或者几列,第三个参数表示维度,1表示按照行抽取,2表示按照列抽取,我们这里的1就表示为按照行抽取三行,最后的结果显示的是抽取的第4行和第5行,第四行抽取两次,如果我们把true改为false就不会出现一样的情况了(false表示的不放回);

(2)随机抽取矩阵的列

这里随机抽取3列,false不放回,结果不同,抽取的第三第四第五列。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/537547.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第十三章 OpenGL ES-RGB、HSV、HSL模型介绍

第十三章 OpenGL ES-RGB、HSV、HSL模型详细介绍 第一章 OpenGL ES 基础-屏幕、纹理、顶点坐标 第二章 OpenGL ES 基础-GLSL语法简单总结 第三章 OpenGL ES 基础-GLSL渲染纹理 第四章 OpenGL ES 基础-位移、缩放、旋转原理 第五章 OpenGL ES 基础-透视投影矩阵与正交投影矩阵…

面试:如何设计一个注册中心?

大家好,我是田哥 上周,一位群里的朋友反馈面试情况: 今天,给大家分享如何设计一个注册中心。其实这个问题,我之前在知识星球里分享过,可能是因为时间比较久了,加上这位朋友加入不久,…

五步搭建:用HelpLook零代码创建企业专属知识库

随着企业的不断发展,拥有一个强大的企业知识库不仅能促进内部沟通,还能展示企业专业形象。HelpLook作为一款简单好用AI知识库搭建系统,只需5步,即可能够零代码帮助企业建立专属知识库。 一、如何从0到1搭建企业知识库?…

ARL资产侦察灯塔系统

1、资产侦察灯塔系统搭建 1.1、系统要求 目前暂不支持 Windows,Linux 和 MAC 建议采用 Docker 运行,系统配置最低 2 核 4G。 由于自动资产发现过程中会有大量的的发包,建议采用云服务器可以带来更好的体验 实验环境: 系统&…

数据结构复习指导之顺序表上基本操作的实现(插入、删除、查找)

文章目录 顺序表基本操作实现 知识总览 1.顺序表的初始化 1.1静态分配顺序表的初始化 1.2动态分配顺序表的初始化 2.插入操作 2.1插入操作流程 2.2插入操作时间复杂度 3.删除操作 3.1删除操作流程 3.2删除操作时间复杂度 4.查找操作 4.1按位查找 4.2按位查找时间…

NetBox4 安装指南-为网络工程师打造的基础设施管理(全面汉化)

介绍 NetBox 是用于建模和记录现代网络的领先解决方案。由 结合 IP 地址管理 (IPAM) 的传统应用和 具有强大 API 和扩展的数据中心基础架构管理 (DCIM), NetBox 为推动网络自动化提供了理想的“事实来源”。 NetBox 在…

弹性云服务器性能对比(内附测试数据),快快网络服务器崭露头角

随着计算技术的不断革新,云服务器已成为企业和个人部署应用与服务的首选。尤其线上业务日益盛行的今天,云服务商的实力更是备受瞩目。对于企业而言,高稳定,存储速度都是不可或缺的基本要求,这些都对公有云的云端编解码…

阿里云服务器部署网站(图文详解)

一,准备工作 1.1,点击:注册阿里云账号 输入:账户名,登录密码,手机号。 1.2,域名注册和备案 详细请参考:阿里云域名购买流程和备案流程 1.3,准备服务器 详细请参考&a…

【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框

往期回顾: 【QT入门】 Qt自定义控件与样式设计之qss选择器-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬…

观察者模式:实现高效事件驱动编程的策略

在软件开发中,观察者模式是一种关键的行为型设计模式,用于建立对象间的一种依赖关系,使得当一个对象改变状态时,所有依赖于它的对象都会得到通知并被自动更新。这种模式是事件监听和响应编程的基石。本文将详细介绍观察者模式的定…

【JAVA基础篇教学】第十篇:Java中Map详解说明

博主打算从0-1讲解下java基础教学,今天教学第十篇:Java中Map详解说明。 在 Java 编程中,Map 接口代表了一种键值对的集合,每个键对应一个值。Map 接口提供了一系列操作方法,可以方便地对键值对进行增删改查等操作。本…

【汇编】_Visual Studio2019写32位汇编

目录 第一步:创建新项目 1. 空项目—下一步 2. 选择位置—填写项目名—创建 第二步:项目生成依赖项 1. 右击项目名—生成依赖项—生成自定义 2. 选中masm—确定 第三步:创建源文件 1. 源文件—添加—新建项 2. 选择C文件—创建新文件…

数据库被rmallox勒索病毒加密,如何还原?

近年来,网络安全问题日益严峻,勒索病毒作为其中的一种恶意软件,已成为网络安全领域的一大难题。其中,rmallox勒索病毒以其高度的隐蔽性和破坏性,给不少企业和个人带来了严重损失。本文将从rmallox勒索病毒的特点、传播…

Unity-超级方便的Excel 读写插件

超级无敌棒棒糖🖌 🌭功能介绍🍕 Demo🌳准备一个数据类🌳准备一个Excel🌳导入Excel🌳行数据自动转换🌳导出到Excel 🍱新增映射字段类型 🌭功能介绍 &#x1f…

监控系统泛滥:CTO 面临的隐形成本危机

在信息技术飞速发展的今天,构建和维护现代化的数字系统变得日益复杂和关键;在这样的背景下,监控系统的作用变得尤为突出。正如业界广泛流传的一句经验之谈“无监控,不运维”所揭示的道理一样,对于任何具有一定复杂性的…

进程程序替换

文章目录 程序替换原理替换函数函数解释调用举例 程序替换原理 用新进程的代码和数据覆盖旧进程的代码和数据,没有创建新进程,用旧进程的壳执行了新进程。 站在被替换进程的角度:本质就是程序从磁盘加载到了内存。 怎么加载呢?…

【电控笔记6】电流回路+延迟效应

问题提出 数字控制系统的delay: 5.4节有介绍T0=0.5TS 低通滤波器的时间常数? 可用示例程序 m2 2 1b 如下图画出开环系统的伯德图进行比较,如图 2-2-4 所示,由于延迟组件会侵蚀系统的相位,因此从图可以看出,加入延迟效应后,q轴电流回路的相位裕度(Phase Margin) 从…

【数据结构】单链表(二)

目录 1.查找数据 2.指定位置插入和删除节点 2.1 指定位置之前插入节点 2.2 指定位置之后插入节点 2.3 删除指定位置节点 2.4 删除指定位置之后的节点 3.销毁链表 我们接着上一篇【数据结构】单链表(一)-CSDN博客 来继续实现单链表 1.查找数据 在…

c# wpf datagrid 简单试验

1.概要 datagrid 一个列表类的控件 2.代码 <Window x:Class"WpfApp2.Window3"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.mic…

关于 STM32WL LSE 添加反馈电阻后无法起振问题

1. 问题描述 客户调试 STM32WLE5JB 样机的时候遇到这样一个问题&#xff1a;在调试 LPUART&#xff0c;不打开外部时钟的时候&#xff0c;能够正常打印&#xff0c;若开启外部的 HSE 和 LSE 后就没有打印。 2. 问题确认 发现上述问题时&#xff0c;客户使用 STM32CubeMX 生成…