数学建模-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不放回,结果不同,抽取的第三第四第五列。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UI自动化测试案例

备注:本文为博主原创文章,未经博主允许禁止转载。如有问题,欢迎指正。 个人笔记(整理不易,有帮助,收藏+点赞+评论,爱你们!!!你的支持是我写作的动力) 笔记目录:笔记本~笔记目录_airtest和selenium那个好用-CSDN博客 个人随笔:工作总结随笔_8、以前工作中都接触过哪…

鸿蒙南向开发:【智能烟感】

样例简介 智能烟感系统通过实时监测环境中烟雾浓度,当烟雾浓度超标时,及时向用户发出警报。在连接网络后,配合数字管家应用,用户可以远程配置智能烟感系统的报警阈值,远程接收智能烟感系统报警信息。实现对危险及时报…

Java区域基层卫生云联his系统源码 医院信息管理系统源码

基于云计算的医疗卫生信息系统(cloud-based healthcare informationsystem,简称“云 HIS”)是基于云计算技术,将医院信息系统、电子病历系统、实验室信息系统、公共卫生等系统横向集成的系统,为医疗机构信息化建设提供标准化、信息化、协同化…

思维题,LeetCode 2923. 找到冠军 I

一、题目 1、题目描述 一场比赛中共有 n 支队伍&#xff0c;按从 0 到 n - 1 编号。 给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 < i, j < n - 1 且 i ! j 的所有 i, j &#xff1a;如果 grid[i][j] 1&#xff0c;那么 i 队比 j 队 强 &a…

003Node.js创建第一个web服务

如果用PHP来编写后端代码&#xff0c;需要用Apache或者Nginx的服务器,来处理客户的请求响应。对于Node.js时&#xff0c;不仅实现了应用&#xff0c;同时还实现了整个HTTP服务器. 安装 Node Snippets插件&#xff08;编程自带提示&#xff09; console.log(你好nodejs); //表…

代理模式:控制对象访问的智能方式

在面向对象的软件开发中&#xff0c;代理模式是一种结构型设计模式&#xff0c;它为其他对象提供一个代理或占位符以控制对这个对象的访问。代理模式在实现权限控制、延迟初始化和远程对象访问等方面非常有用。本文将详细介绍代理模式的定义、实现、应用场景以及优缺点&#xf…

【进阶篇】二、实现Java Agent的静态加载和动态加载

文章目录 1、Java Agent2、两种加载模式静态加载模式动态加载模式 3、静态加载模式实现4、动态加载的实现 1、Java Agent 通过Java Agent&#xff0c;生成一种特殊的jar包&#xff08;一种工具&#xff09;&#xff0c;业务程序可以主动去调用jar包里的方法。比如下面这个有打…

奎芯科技:智能时代的芯片上游企业如何突破?

半导体IP&#xff08;Intellectual Property&#xff0c;知识产权&#xff09;&#xff0c;通常也称作IP核&#xff08;IP core&#xff09;&#xff0c;指芯片设计中预先设计、验证好的功能模块&#xff0c;主要服务于芯片设计&#xff0c;因部分通用功能模块在芯片中被反复使…

Linux磁盘扩容并设置挂载点

背景 使用pve创建了一个虚拟机&#xff0c;各种环境配置都安装好了之后发现分配的磁盘空间太小了&#xff0c;默认的就30多个G&#xff0c;这还没咋玩呢就满了&#xff0c;像扩容却找遍了这个pve都没找到扩容按钮&#xff0c;并且我这个磁盘不是lvm结构的&#xff0c;所以好像…

工业网络互联互通问题的探讨——青创智通

工业物联网解决方案-工业IOT-青创智通 随着科技的不断发展&#xff0c;工业网络已经成为现代工业生产中不可或缺的一部分。工业网络能够将各个生产设备、传感器、执行器等连接在一起&#xff0c;实现信息的共享和协同工作&#xff0c;从而提高生产效率、降低能耗、提升产品质量…

python如何判断图片为黑白还是彩色

基本原理 灰度图分两种情况&#xff1a; 单通道的图片 RGB 三通道的图片&#xff0c;但是每个通道的值相等 对于单通道的图片只需要判断图片的通道值是否为1 对于RGB模式的图片&#xff0c;情况稍稍复杂些。理论上只需判断RGB三个通道的值是否相等&#xff0c;但是现实中灰度…

局域网内部使用的视频会议系统推荐

随着远程办公的普及和全球化的发展趋势&#xff0c;企业需要一个高效、灵活、安全的音视频会议解决方案&#xff0c;以支持远程办公的协同工作、跨地域沟通等需要。私有化音视频会议就是一个适合企业自身部署的解决方案。它不仅能够满足企业信息管理和保密的需求&#xff0c;而…

广告电商模式:购物得积分 看广告还能赚钱!

互联网时代的浪潮中&#xff0c;电子商务与广告行业日新月异&#xff0c;不断碰撞出全新的火花。在这种背景下&#xff0c;广告电商模式作为一种创新的商业模式崭露头角&#xff0c;它以广告与电商的深度融合为核心&#xff0c;通过精准化的营销手段与用户的积极参与&#xff0…

基于SpringBoot+Vue的咖啡商城(带文档)

项目介绍: 基于SpringBootVue的咖啡商城&#xff08;带文档&#xff09; 网上咖啡商城系统&#xff0c;咖啡商城系统 前后端分离&#xff0c;Java开发&#xff0c;Vue框架&#xff0c;Redis分布式缓存&#xff0c;MyBatis 运行环境&#xff1a;JDK1.8MySQLMavenRedisNode.js 项…

前端开发攻略---面对复杂多变的甲方需求,一个成熟的程序员该如何应对呢?独门秘籍

以下招式&#xff0c;过于狠毒&#xff0c;谨慎使用&#xff0c;如有后果&#xff0c;概不负责 1、甲方要求优化首页白屏 优化前 setTimeout(() > {createApp(App).mount(#app)}, 3000) 优化后 setTimeout(() > {createApp(App).mount(#app)}, 1000) 注意&#xff1a;记得…

高通user版本diag口无法正常连接QXDM调试

modem同事调试网络问题&#xff0c;需要连QXDM读取设备信息和抓取log&#xff0c;正常不做修改的user版本只有9091的端口&#xff0c;但是不显示设备&#xff0c;无法正常连接调试. 出于对厂商安全的考虑&#xff1a; 修改位置: device/qcom/sepolicy_vndr/generic/vendor/co…

【灵境矩阵】零代码创建AI智能体之行业词句助手

欢迎来到《小5讲堂》 这是《灵境矩阵》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 创建智能体选择创建方式零代码 基础配置头像名称简介指令开场白…

Fiddler:网络调试利器

目录 第1章:Fiddler简介和安装 1.1 Fiddler概述 1.2 Fiddler的安装步骤 步骤1:下载Fiddler 步骤2:运行安装程序 步骤3:启动Fiddler 1.3 配置Fiddler代理 配置操作系统代理 配置浏览器代理 Google Chrome Mozilla Firefox 第2章:Fiddler界面和基本操作 2.1 Fi…

鸿蒙内核源码分析 (物理内存篇) | 怎么管理物理内存

如何初始化物理内存&#xff1f; 鸿蒙内核物理内存采用了段页式管理&#xff0c;先看两个主要结构体。结构体的每个成员变量的含义都已经注解出来&#xff0c;请结合源码理解. #define VM_LIST_ORDER_MAX 9 //伙伴算法分组数量&#xff0c;从 2^0&#xff0c;2^1&#…