讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。
MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili
MATLAB中有一个非常有用的函数: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 5 8]。
请回答下面的问题:
1.根据上面的介绍,请你在MATLAB中测试randperm函数的功能。特别地,如果n是负数或者小数会出现怎样的情况?如果k大于n会出现怎样的情况?
2. 假设一个商品推销员要去10个不同的城市推销商品,该推销员随机选择一个城市出发,依次经过其他所有的城市后,回到出发的城市(中途经过的城市不重复),为了方便,这10个城市就用数字1至10表示。请你为该推销员随机的生成一条路线(例如2 10 8 9 1 5 7 6 3 4 2)。
3. 使用代码模拟下列场景:假设你是一名数学老师,你正在给同学们讲不定积分的计算。这时候你的PPT上出现了你备课时准备的4道练习题,你需要随机抽取4名幸运同学到黑板上进行计算。已知你的班上共有50名同学,他们的学号分别是2023001至2023050,你在MATLAB中运行了你写的这个程序,这四名同学的学号在MATLAB中被随机地抽取出来。
4. 假设某公司在年会上设置了抽奖环节。主办方准备了一个抽奖用的不透明盒子,盒子内有10张奖券,其面值分别为[1 2 5 10 20 50 100 200 500 1000],每名员工从中随机地抽取3张,将这3张奖券的面值相加就是他能获得的现金奖励。请设计一个程序,模拟清风老师在该抽奖环节中抽取一次能获得多少钱。
5. 一副扑克牌有54张,其中大王和小王各一张,A,2,3,4,5,6,7,8,9,10,J,Q,K各有4张。假设我们不考虑桃杏梅方这四种花色,请你设计一个随机的发牌程序,为地主发20张牌,两个农民各发17张牌。为了方便,A,2,3,4,5,6,7,8,9,10,J,Q,K分别用数字1至13代替,小王用14代替,大王用15代替。进一步地,请你判断地主的牌是否有炸弹(有炸弹是指手上有双王或者有四张相同的牌例如4张3)?
判断地主手上是否有炸弹
(1)双王
(2)普通炸弹