翻转硬币100次获得50 Matlab

时间:2014-08-30 23:12:44

标签: matlab for-loop coin-flipping

如果我将硬币翻转100次,那么50个硬币的概率是多少?我的想法是获得100次硬币中出现的正好50次的次数翻转1000次并除以1000次事件的数量。 我必须在Matlab中对这个实验进行建模。 我知道将硬币翻转100次并检索头数并将计数加到正好50个头的数量是一个事件。但我不知道如何重复1000次或10000次。

以下是我到目前为止编写的代码:

total_flips=100;
heads=0;
tails=0;
n=0;
for z=1:1000
%tosses 100 coins 
for r=1:100
    %randomizes to choose 1 or 0, 0 being heads
    coin=floor(2*rand(1));
    if (coin==0)
        heads=heads+1;
    else
        tails=tails+1;
    end
end

if heads==50
    n=n+1;
end
end

我试图在for循环中包含for循环和if语句,但没有运气。我该如何重复?

2 个答案:

答案 0 :(得分:3)

虽然你的问题已经解决了,但是这里有关于你的代码的评论:

1)你设置了变量total_flips=100,但是你没有在你的for循环中使用它,它从1变为100.它可以从1变为total_flips

2)省略for循环:虽然这不是你的问题,但你的代码可以优化。您的问题不需要单个for循环:

repititions = 1000;
total_flips = 100;
coin_flip_matrix = floor(2*rand(total_flips, repititions));  % all coin flips: one column per repitition
num_of_heads = sum(coin_flip_matrix); % number of heads for each repitition (shaped: 1 x repitions)
n = sum(num_of_heads == 50) % how often did we hit 50?

答案 1 :(得分:1)

您根本不需要tails,并且需要在外部heads循环内将for z=1:1000设置为零。