MATLAB模拟问卷调查结果

242 阅读2分钟

正文

本文已参与「新人创作礼」活动,一起开启掘金创作之路。之前有一个旅游管理系的学妹找我问本科毕业论文的事情,模拟了200多人填写问卷的结果。

代码

a=zeros(1,7);
b=rand(1,230)*10;
for j=1:230
    while b(j)>7  
        b(j)=0;
        b(j)=rand(1)*10;
    end
if ceil(b(j))==7
%七全选的情况
a=a+ones(1,7);
elseif b(j)==6
c1=rand(1)*10;
%选六个的情况
while c1>7
    c1=0;
    c1=rand(1)*10;
end
if ceil(c1)==7
    a(1,1:6)=a(1:1:6)+1;
elseif ceil(c1)==6
    a(1,1:5)=a(1,1:5)+1;
    a(7)=a(7)+1;
elseif ceil(c1)==5
    a(1,1:4)=a(1,1:4)+1;
    a(1,6:7)=a(1,6:7)+1;
elseif ceil(c1)==4
    a(1,1:3)=a(1,1:3)+1;
    a(1,5:7)=a(1,5:7);
elseif ceil(c1)==3
    a(1,1:2)=a(1,1:2)+1;
    a(1,4:7)=a(1,4:7)+1;
elseif ceil(c1)==2
    a(1)=a(1)+1;
    a(1,3:7)=a(1,3:7)+1;
elseif ceil(c1)==1
    a(1,2:7)=a(1,2:7)+1;
end
%选5个的情况
elseif ceil(b(j))==5
c2=rand(1)*10;
c3=rand(1)*10;
while c2==c3    %%如果选中的两个数都相同,就变成一个了。不符合要求,所以要去掉。
    c2=0;
    c2=rand(1)*10;
    c3=0;
    c3=rand(1)*10;
end
while c2>7
     c2=0;
    c2=rand(1)*10;
end
while c3>7
    c3=0;
    c3=rand(1)*10;
end
if ceil(c2)==7
       a(1,1:6)=a(1:1:6)+1;
elseif ceil(c2)==6
    a(1,1:5)=a(1,1:5)+1;
    a(7)=a(7)+1;
elseif ceil(c2)==5
    a(1,1:4)=a(1,1:4)+1;
    a(1,6:7)=a(1,6:7)+1;
elseif ceil(c2)==4
    a(1,1:3)=a(1,1:3)+1;
    a(1,5:7)=a(1,5:7);
elseif ceil(c2)==3
    a(1,1:2)=a(1,1:2)+1;
    a(1,4:7)=a(1,4:7)+1;
elseif ceil(c2)==2
    a(1)=a(1)+1;
    a(1,3:7)=a(1,3:7)+1;
elseif ceil(c2)==1
    a(1,2:7)=a(1,2:7)+1;
end
if ceil(c3)==7
    a(1,1:6)=a(1:1:6)+1;
elseif ceil(c3)==6
    a(1,1:5)=a(1,1:5)+1;
    a(7)=a(7)+1;
elseif ceil(c3)==5
    a(1,1:4)=a(1,1:4)+1;
    a(1,6:7)=a(1,6:7)+1;
elseif ceil(c3)==4
    a(1,1:3)=a(1,1:3)+1;
    a(1,5:7)=a(1,5:7);
elseif ceil(c3)==3
    a(1,1:2)=a(1,1:2)+1;
    a(1,4:7)=a(1,4:7)+1;
elseif ceil(c3)==2
    a(1)=a(1)+1;
    a(1,3:7)=a(1,3:7)+1;
elseif ceil(c3)==1
    a(1,2:7)=a(1,2:7)+1;
end
%选中4个的情况
elseif ceil(b(j))==4
c4=rand(1)*10;
c5=rand(1)*10;
c6=rand(1)*10;
while c4==c5||c4==

代码注解

这个代码其实本身就是一个小实验,做着玩的,假设每个人都是随机选择的选项答案,就当磨练一下自己matlab技术,大家有兴趣也可以试一下!