MATLAB知识点:randperm函数(★★★★★)将一个数字序列进行随机打乱

news/2025/1/15 13:50:08/

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​

MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili

节选自第3章:课后习题讲解中拓展的函数

在讲解第三章课后习题的过程中,我给大家拓展了一些讲义中没有介绍的新函数:


(6)randperm函数(★★★★★)

randperm函数是一个非常有用的函数,它能够将一个数字序列进行随机打乱。它有两种主要的使用方法:

用法1:randperm(n)可以将向量1:n中元素的顺序随机打乱,生成一个长度仍为n的新向量,因此所有可能出现的情况共n!种(全排列)。例如,当你运行randperm(4)时,你可能得到[1 4 3 2],也可能得到[3 2 4 1]。

用法2:randperm(n,k)表示从打乱的1:n序列中随机的选择k个数出来,显然这k个数都不相同,且k要小于等于n。例如,当你运行randperm(10,3)时,你可能得到[5 3 10],也可能得到[6 1 8]。

randperm函数在实际的场景中应用的非常广泛,第三章课后练习挑战篇中的第五题举了几个例子,大家一定要看最上方的讲解视频学习

(1)模拟商品推销员访问城市(旅行商问题、TSP

(2)模拟课堂上随机选取同学答题

(3)模拟抽奖能获得多少金额

(4)模拟斗地主游戏为地主和农民发牌

注意:randperm(n,k)和randi(n,k,1)的区别在于:randperm相当于无放回的抽样,而randi相当于有放回的抽样。因此,randperm函数返回的结果中的各元素都不相同,而randi函数返回的结果中的各元素可能相同。

拓展:对randperm函数背后原理感兴趣的同学可以自行搜索Fisher–Yates shuffle 算法(洗牌算法)。


http://www.ppmy.cn/news/1351831.html

相关文章

Mermaid绘制UML图教程

Mermaid 是一种轻量级的图形描述语言,用于绘制流程图、时序图、甘特图等各种图表。它采用简单的文本语法,使得用户能够快速绘制各种复杂图表,而无需深入学习图形绘制工具。 一、安装Mermaid Mermaid 可以在浏览器中直接使用,也可…

[项目管理] 如何使用git客户端管理gitee的私有仓库

最近发现即使翻墙也无法g使用ithub了,需要把本地的项目搬迁到新的git托管平台。 gitee 是一个国内开源项目托管平台,是开源开发者、团队、个人进行 git 代码管理和协作的首选平台之一。本文将详细介绍如何向 gitee 提交私有项目。 注册 Gitee 账号并创建…

JavaScript中的Symbol:加密与安全性

JavaScript中的Symbol是一种唯一且不可变的数据类型,引入了一种新的基本数据类型,用于表示独一无二的标识符。在本文中,我们将深入介绍JavaScript中的Symbol,讨论如何将其应用于JS加密中,提供案例代码,并说…

Redis数据删除策略

一、惰性删除 惰性删除:设置该key过期时间后,我们不去管它,当需要该key时,我们在检查其是否过期,如果过期,我们就删掉它,反之返回该key 优点 :对CPU友好,只会在使用该key…

分享一下 uniapp 打包安卓apk

首先需要安装 Java 环境,这里就不做解释了 第二步:打开 mac 终端 / cmd 命令行工具 使用keytool -genkey命令生成证书 keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore *testalias 是证书别名&am…

【python】列表

是指一系列的按特定顺序排列的元素组成。 是python中内置的可变序列 在python中使用[]定义列表,元素与元素之间使用英文的逗号分隔 列表中的元素可以是任意的数据类型 列表的遍历 enumerate函数的使用语法结构 for index,item in enumerate(lst):输出index和item…

精品jsp+ssm基于Java的财务收支记账管理系统

《[含文档PPT源码等]精品jspssm基于Java的收支管理系统[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 使用技术: 开发语言:Java 框架:ssm 技术:JSP JDK版本&…

【Linux学习】生产者-消费者模型

目录 22.1 什么是生产者-消费者模型 22.2 为什么要用生产者-消费者模型? 22.3 生产者-消费者模型的特点 22.4 BlockingQueue实现生产者-消费者模型 22.4.1 实现阻塞队列BlockQueue 1) 添加一个容器来存放数据 2)加入判断Blocking Queue情况的成员函数 3)实现push和pop方法 4)完…