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

​讲解视频:可以在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 算法(洗牌算法)。

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: randperm函数MATLAB中的一个随机排列函数,用于生成一个随机的排列向量。该函数的语法为: p = randperm(n) 其中,n为整数,表示生成排列向量的长度,p为生成的排列向量。该函数会生成一个长度为n的向量,其中包含了1到n的所有整数,但是这些整数的顺序是随机的。 ### 回答2: 在MATLAB中,randperm函数是一种用于生成指定范围内随机排列的函数。其语法为randperm(n)或randperm(n,k),其中n表示生成排列的范围,k表示生成排列的元素个数(可选)。 当只输入一个参数n时,函数会生成一个1至n的随机排列,每个元素都不相同。例如,randperm(5)可能会生成[3, 1, 5, 4, 2]这样的随机排列。 当输入两个参数n和k时,函数会生成一个1至n的随机排列,并返回其中的前k个元素。这在需要从给定范围中随机选择指定数量元素的情况下非常有用。例如,randperm(10, 3)可能会生成[7, 1, 9]这样的随机排列,并返回前三个元素。 randperm函数可应用于很多实际问题。例如,当需要在一定范围内随机抽取样本、生成随机索引或者进行模拟实验时,我们可以使用该函数。通过生成随机排列,可以使得样本或实验的结果更具随机性,从而更好地模拟实际情况。 总之,MATLAB中的randperm函数用于生成指定范围内的随机排列,在数据分析、模拟实验和随机抽样等方面有着广泛的应用。 ### 回答3: randperm函数MATLAB中的一个随机排列函数,用于生成一组随机的不重复的整数序列。该函数的语法为:randperm(n),其中n为正整数,表示生成的整数序列的最大值。 randperm函数的返回值是一个大小为1×n的行向量,其中包含了从1到n(包括1和n)的整数,这些整数是随机排列的。换句话说,返回值是一个1到n的排列,且每个整数只出现一次。 例如,调用randperm(5)可能返回[3 1 4 2 5],表示一个包含了1到5的随机排列。 randperm函数在许多应用场景中非常有用。例如,可以用它来生成随机的索引来打乱数据集的顺序,以便进行交叉验证或样本分割。此外,也可以用randperm函数生成随机的数列,作为游戏或程序中的随机数种子。 需要注意的是,randperm函数会在每次调用时生成不同的随机排列,因此多次调用该函数可能会得到不同的结果。 综上所述,randperm函数MATLAB一个用于生成随机排列整数序列函数,可以在多种应用场景中使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值