如果我将硬币翻转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语句,但没有运气。我该如何重复?
答案 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
设置为零。