用matlab怎么做抽签程序?就是说6个同学中抽2个?我之前有做出来但是只显示了姓没有后面的名。谢谢

用matlab怎么做抽签程序?就是说6个同学中抽2个?我之前有做出来但是只显示了姓没有后面的名。谢谢,第1张

我觉着你这个问题可能是定向求助的,不过我还是来回答了。你可以参考下边这样的:

firstnameset={'钱','张','李','王','赵','吴'}

secondnameset={'二','三','四','五','六','麻子'}

temp=randperm(6)

disp('抽签结果:')

person1=[cell2mat(firstnameset(temp(1))),cell2mat(secondnameset(temp(1)))]

person2=[cell2mat(firstnameset(temp(2))),cell2mat(secondnameset(temp(2)))]

disp(person1)

disp(person2)

你跑一跑就可以看到结果咯~

我觉得你编程的思路有问题,你最后计算概率是跳出循环后,算出一个甲的和乙的,然而,事实上,他们摸到白球的概率是累加的,而且每次的还不一样,例如,假设第一次是甲摸,那么甲摸到白球的概率为10/20,接下来乙摸,那么乙摸的话就要考虑甲摸到还是没有摸到,假如甲摸到,那么乙的概率就是(9/19),甲没有摸到,那么就有(10/19),而这两个概率应该是在甲摸到与没摸到的前提下,就是在什么发生的条件下乙摸到白球的概率,看来计算还真是挺复杂的。

不过我可以告诉你最终的结果应该是两者一样的,都为1/2.

就如同咱们让五个人抽签,分别为1,2,3,4,5,那么就有每一个人抽到每一个数的概率,而且抽取后也不放回,每一个人的概率都为1/5。

clc

clear

Name={'Jack ','Marry','Tom ','Peter','Rose ','Tim ','Kate '}

Mark={72,58,34,89,97,92,78} %同学得分

[sh,sz]=size(Name)

Rank=cell(1,sz)

for i=1:10

a{i}=89+i%90分以上

b{i}=79+i%80多

c{i}=69+i%70多

d{i}=59+i%60多

end

S=struct('Name',Name,'Marks',Mark,'Rank',Rank)%创建一个构架数组

for i=1:sz

switch S(i).Marks

case a

S(i).Rank='exellent'

case b

S(i).Rank='good'

case c

S(i).Rank='not bad'

case d

S(i).Rank='pass'

otherwise

S(i).Rank='fail'

end

end

disp(['学生姓名 ',' 得分 ',' 等级'])disp(' ')

ii=round(rand*6)+1 %产生随机1-7整数

disp([S(ii).Name,blanks(6),num2str(S(ii).Marks),blanks(6),S(ii).Rank]) %显示这个随机抽取的人的成绩和等次


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11387992.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存