数学建模-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”)是基于云计算技术,将医院信息系统、电子病历系统、实验室信息系统、公共卫生等系统横向集成的系统,为医疗机构信息化建设提供标准化、信息化、协同化…

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

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

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

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

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

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

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

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

Linux磁盘扩容并设置挂载点

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

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

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

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

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

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

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

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

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

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

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

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

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

【vue】ref 和 reactive 对比

ref&#xff1a;存储单个数据&#xff0c;如数值&#xff0c;字符串reactive&#xff1a;存储复杂数据&#xff0c;如对象&#xff0c;数组 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"vie…

创建vue3项目遇到的部分问题及解决方式

export default defineConfig({server: {// https: true,// 启用https协议&#xff0c;默认是HTTP协议host: true, // 监听所有地址port: 1314,// 前端项目启动的端口号open: true,// 开启代理cors: false, // 为开发服务器配置 CORSproxy: {^/api: {target: ,// 服务器地址cha…

(Java)数据结构——图(第七节)Folyd实现多源最短路径

前言 本博客是博主用于复习数据结构以及算法的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 Folyd实现原理 中心点的概念 感觉像是充当一个桥梁的作用 还是这个图 我们常在一些讲解视频中看到&#xff0c;就比如dist&#xff08;-1&#xff09;&#xff0…

WooCommerce的使用方式和特点

WooCommerce是一款基于WordPress的开源电子商务插件&#xff0c;它允许用户在WordPress网站上创建和管理在线商店。以下是WooCommerce的一些使用方式和特点。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.产品管理&#xff1a;Woo…

bugku-web-file_get_contents

<?php extract($_GET); if (!empty($ac)){$f trim(file_get_contents($fn));if ($ac $f){echo "<p>This is flag:" ." $flag</p>";}else{echo "<p>sorry!</p>";} } ?> 这里涉及到几个不常用的函数 这里直接构…