0

コインを100回投げたとき、ちょうど50回表が出る確率は? 私の考えでは、1000 回のコイントスのうち、100 回のコイントスで正確に 50 回出現した回数を取得し、それをイベント数である 1000 で割りました。この実験を Matlab でモデル化する必要があります。コインを 100 回投げて表の数を取得し、正確に 50 の表の数にカウントを追加することが 1 つのイベントであることを理解しています。しかし、そのイベントを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 ループと if ステートメントを for ループ内に含めようとしましたが、うまくいきませんでした。どうやって繰り返すの?

4

2 に答える 2

3

問題は解決しましたが、コードに関するコメントがあります。

1) 変数total_flips=100を設定しますが、1 から 100 になる for ループでは使用しません。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?
于 2014-08-31T10:06:22.923 に答える
1

まったく必要ありません。外側のループ内でゼロに戻すtails必要があります。headsfor z=1:1000

于 2014-08-30T23:30:17.853 に答える