以下题目是来自微信公众号数学建模清风老师的题目
以下是个人结合在微信公众号上学到的知识去做的,如有不正确或不足之处,欢迎指正!
Q6.最近短视频上有一个有趣的街头抽奖游戏,规则如下:摆摊的店家准备了24个大小相同的玻璃球,其中红黄蓝各8个,装进一个袋子里,在看不见的情况下,玩家从袋子中抓出12个球,然后计算每种颜色球的个数,颜色多的球放在前面。比如5个红色4个蓝色3个黄色,这样就属于543。玩家抓出的12个球的颜色分布情况一定在下表所示的13种情况中。假设参与这个游戏是免费的,如果抽中了相应的情况,店家需要向玩家支付表中第二行所对应的金额。注意,除了543这一种情况玩家要赔给店家30元外,其余的12种情况玩家都是赚钱的,如果你运气好抓到了840这种情况(例如抽出了8个蓝球4个红球),你可以赚300元。请用MATLAB模拟这个游戏并多次运行你的代码,如果你作为玩家参与多次你是赚了还是亏了?你能从理论上解释原因吗?
情况 | 840 | 831 | 822 | 750 | 741 | 732 | 660 |
---|---|---|---|---|---|---|---|
金额 | 300 | 200 | 200 | 80 | 60 | 15 | 15 |
情况 | 751 | 642 | 633 | 552 | 543 | 444 | |
金额 | 10 | 5 | 5 | 5 | -30 | 5 |
解:我就不详细说了,代码也比较简单,后面有注释。经过多次实验,结果基本上都是543,所以玩家参与多次是亏了的。俺有幸抽到一次831。嘿嘿,有没有人从理论解释,知道的话告诉我一下。
%1~8;9~16,;17~24;
clear,clc
A=randperm(24,12); %24个随机抽12个
%颜色划分,即1~8为红,9~16为黄,17~24为蓝
for i=1:length(A)
if A(i)<9
A1(i)=A(i); %对应颜色为红的数字矩阵
elseif A(i)<17&A(i)>8
A2(i)=A(i); %对应颜色为黄的数字矩阵
else
A3(i)=A(i); %对应颜色为蓝的数字矩阵
end
end
n1=find(A1>0); %这里索引的是矩阵大于0的位置
n2=find(A2>0);
n3=find(A3>0);
%各颜色的个数总和,即大于0的位置有多少个
N1=length(n1);
N2=length(n2);
N3=length(n3);
X=horzcat(N1,N2,N3); %矩阵拼接
sort(X,'descend') %降序
Q7.层次分析法是数学建模中一个常用的模型,它主要用于解决评价类问题,也可以为评价体系中的指标确定权重。
Q8.在上一小题的基础上,请写出一段代码能够随机生成一个n阶(例如n=5)的判断矩阵,该判断矩阵要满足上一问中的三个特点。
提示:(1)判断矩阵的主对角线元素一定是1,为什么?(2)本章3.5节中我们学会了如何生成一个随机的对称矩阵,一个n阶的对称矩阵中我们只需要生成n*(n-1)/2个随机数,那么本题中这个n阶的判断矩阵中我们要生成多少个随机数?
现在给你一个矩阵A,请判断A是否符合层次分析法中判断矩阵的三个特点。
(7)
解:前面两个特点就不用说了,主要是特点3,对任意的 i , j = 1 , 2 , . . . , n