使用matlab测量挑选彩色卡片的概率

时间:2013-12-11 22:46:41

标签: matlab probability

好的,所以我想使用matlab生成40张卡片,每张卡片都有不同的颜色,红色,蓝色,绿色和紫色或任何你想要的颜色。每次你选择一张卡片,它都会被移除,我已经计算出纸张上的概率

1 x 30/39 x 20/38 x 10/37 
10.94%

1因为你肯定会第一次选择一张牌,然后你有30/39的机会选择不同的颜色,然后20/38选择最后的2种颜色然后10/37的机会选择最后一种颜色颜色。

我想知道有人会在matlab中模拟这个。我认为你可以生成1到40之间的随机数的4x10矩阵,然后检查每一行,每个数字将它更改为相应的颜色字母,以便1-10之间的数字变为R,11-20变为蓝色等等。 / p>

然后查看每一行,如果该行包含R B G P(按任何顺序),则计数器步骤。然后从计数器中取出金额并将其除以总行数,如果你尝试100,1000,10000,1000000等,它应该大约10%然后更接近。

但我不知道如何进行迭代以将数字更改为字母或检查其中包含的内容。有没有人有任何想法或更好/更简单的方法来做到这一点?

由于

1 个答案:

答案 0 :(得分:2)

您可以使用randsample(来自统计工具箱)进行采样而无需替换:

I = 1e5; %// how many samples to take
successes = 0; %// this will contain how many samples are successful
for ii = 1:I
  sample = randsample(40,4); %// sample without replacement
  successes = successes + all(sort(ceil(sample/10)) == (1:4).'); %'// a sample is
  %// successful if it contains all four colours. 1st colour = cards 1 to 10;
  %// 2nd colour = cards 11 to 20, etc.
end
estimate = successes/I %// estimate of success probability