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

news2024/11/24 13:57:27

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.coloradmin.cn/o/1588380.html

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

相关文章

五一假期干什么赚钱多?假期怎么赚钱又快乐,而不是全家去花钱出去玩买快乐?

兄弟们,赚钱的机会来了!!! 五一假期可以考虑以下方式赚钱: 旅游服务:提供导游、翻译等旅游相关服务。手工艺品销售:制作手工艺品并在旅游景点或线上销售。线上兼职:寻找在线兼职工…

一文搞懂交换机 MAC PHY 网络变压器!

21.交换机 MAC PHY 网络变压器 1.交换机 没有IP路由功能、仅处理数据链路层的交换机叫做二层交换机。 带有IP路由功能的交换机叫做三层交换机。 交换机与路由器的区别: 1.工作层次不同 :交换机主要工作在数据链路层(第二层) …

前端开发攻略---用JavaScript打造炫酷数字变化动画效果:手写实现你的自定义动画函数!支持更改任意数字、动画速度

1、演示 2、介绍 这篇文章将向您展示如何使用JavaScript来创建一个自定义的动画函数,以实现数字变化效果。我们将深入了解前端动画的本质,并通过手写代码来实现这个炫酷的数字变化动画效果。您将学到如何利用JavaScript来操作DOM元素,控制动画…

FPGA基于VCU的H265视频解压缩,解码后HDMI2.0输出,支持4K60帧,提供工程源码+开发板+技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的视频图像编解码方案4K60帧HDMI2.0输入,H265视频压缩方案 3、详细设计方案设计框图FPGA开发板解压视频源Zynq UltraScale VCUVideo Frame Buffer ReadVideo MixerHDMI 1.4/2.0 Transmitter SubsystemVideo PHY Cont…

ARM内核、内核寄存器及作用、ARM最小系统、半导体器件、存储器、ARM工作方式、ARM寄存器个数、立即数、汇编指令的s/c后缀

我要成为嵌入式高手之4月10日51单片机第五天!! ———————————————————————————— 单片机最小系统板: 单片机内部的CPU: CPU定义的变量都在ram中、编写的程序代码都在rom中 CPU在次细化:ker…

计算机导论——C语言001

前言 学习一门语言不是要记住所有这些函数,而是要懂得在哪里找到解决问题的答案 学习英语不是要记住所有单词,而是要懂得查字典(因为这样就可以理解单词,并会用单词造句子了) 以下侧重于了解输出(side eff…

new Ammo.btSoftBodyHelpers() 是 Ammo.js 中的一个构造函数,用于创建软体物体的辅助对象,提供了一些方法来创建软体物体

demo案例 new Ammo.btSoftBodyHelpers() 是 Ammo.js 中的一个构造函数,用于创建软体物体的辅助对象,提供了一些方法来创建软体物体。以下是它的一些重要信息: 入参:通常不需要传入参数。 出参:创建的新的软体辅助对…

软件设计师-基础知识科目-面向对象技术知识7

七、面向对象技术知识: 面向对象基础知识: 对象: 对象的组成部分包括:对象名,状态(属性),行为(操作)。 类: 类的分类:实体类、接口类(边界类)和控制类。 实体类的对象&#xff…

CentOS7 boa服务器的搭建和配置

环境是CentOS7,但方法不局限于此版系统,应该是通用的。 具体步骤如下: 1. 下载boa源码 下载地址: Boa Webserver 下载后,进入压缩包所在目录,进行解压: tar xzf boa-0.94.13.tar.gz 2. 安装需要的工具b…

信息系统项目管理师——第23章组织通用管理

本章在第三版流程和知识管理的基础上新增了2节内容,从2023年上半年的考情来看来 选择题,考1分左右,知识点比较分散,刷下题,考前突击下即可。 案例题,不考。 论文题,不考。 1人力资源管理 1.人…

微服务学习(黑马)

学习黑马的微服务课程的笔记 导学 微服务架构 认识微服务 SpringCloud spring.io/projects/spring-cloud/ 服务拆分和远程调用 根据订单id查询订单功能 存在的问题 硬编码 eureka注册中心 搭建eureka 服务注册 在order-service中完成服务拉取 Ribbon负载均衡 Nacos注册中心…

结合ArcGIS+SWAT模型+Century模型:流域生态系统水-碳-氮耦合过程模拟

原文链接:结合ArcGISSWAT模型Century模型:流域生态系统水-碳-氮耦合过程模拟https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&tempkeyMTI2NV9sMGRZNUJoVkNVc1ZzSzRuMl9XXzhqX0R3cXpESWFwM1E4cFY4ejNqWFh3VUl0dlZkNWk4b20ydFdFTy1xS2ZObGN0Z0ZXSjly…

交流电源的频率如何测试

交流电源的频率是指每秒钟交流电源周期的数量,通常是50Hz和60Hz。但是在实际使用中会有一定的波动,一般交流电源频率的波动范围是10%。 交流电源频率的高低对电路有很大的影响,直接影响着电能质量和电路的稳定性。此外,交流电源的…

Docker核心特征

Docker的基本概念 Dockerfile:制作进行的文件,可以理解为制作镜像的一个清单。 镜像:用来创建容器的安装包,可以理解为给电脑安装操作系统的系统镜像。 容器:通过镜像来创建的一套运行环境,一个容器里可…

eBPF 主题分享:Kindling-OriginX 解密如何揭开可观测性盲区实现根因推导

“第二届eBPF开发者大会”将于2024年4月13日在陕西省西安市线下召开,由西安邮电大学主办。本次大会以“发挥eBPF技术力量,提升计算机系统可观测性和性能”为主题,涵盖了eBPF技术及发展、eBPF网络安全应用、eBPF可观测性及应用、软件性能工程等方面&#…

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

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

Tomcat以服务方式启动,无法访问网络共享目录问题

关于“Tomcat以服务方式启动,无法访问网络共享目录问题”解决方式如下: 1、通过doc命令【services.msc】打开本地服务找到,找到tomcat服务所在位置 2、右键打开Tomcat服务的属性 3、选择 登陆选项卡 4、选择“此账户”选项,并…

预告:(阶乘)+统计读取的单个字符+把我电脑给干关机了的题,还好在tmp里面找到(穷举法编程)+(双循环算法)+(最大公约数,最小公倍数)

在赶一篇作业出来 第一个: 题目:编程实现,求saaaaaaaa⋯an个a的值,其中a是一个数字。例如当a为2,n为5时,计算,2+22+222+2222+22222的值。 #inc…

elementUI 下拉框加提示文案

效果如下&#xff1a; 展示文案在最下面&#xff0c;跟选项有个分割线 <el-select v-model"value" placeholder"请选择" clearable popper-class"addNotice" class"addNoticeS" visible-change"(v) >selectNotice(v,展示…

物联网SaaS平台

在信息化、智能化浪潮席卷全球的今天&#xff0c;物联网SaaS平台作为推动工业数字化转型的重要工具&#xff0c;正日益受到广泛关注。那么&#xff0c;物联网SaaS平台究竟是什么&#xff1f;HiWoo Cloud作为物联网SaaS平台又有哪些独特优势&#xff1f;更重要的是&#xff0c;它…