0

これは、インストラクターから出された MATLAB の質問です。 質問のイメージ

問題をどのように解決したかについての私のコードは次のとおりです。回答キーを見て、教授が cumsum を使用していることに気付きましたが、確率に関して私のコードで実際に何をしているのか理解できません。正しい出力が得られましたが、明確にしたい:

clear; clc;

m = input('Type size of map  :  ');
totalSteps = 0;
x = 0;
y = 0;
Prob = [ 2 3 4 5 6 5 4 3 ]/32;
trials = input('Type number of trials  :  ');
CumProb = Prob;

for i = (0:length(trials));

for n = 2:length(Prob)
    CumProb(n) = CumProb(n-1) + Prob(n);
end

while abs(x)<m || abs(y)<m
    r = rand(1,1);

    if r <= CumProb(1)
        x=x+1;
    elseif r<=CumProb(2)
        x=x+1 ; y=y+1;
    elseif r<= CumProb(3)
        y=y+1;
    elseif r<=CumProb(4)
        x = x-1 ; y=y+1;
    elseif r<=CumProb(5)
        x=x-1;
    elseif r<=CumProb(6)
        x=x-1; y=y-1;
    elseif r<=CumProb(7)
        y=y-2;
    else
        x = x+1 ; x=y;
    end

    totalSteps = totalSteps+1;
end
i = i+1;
end

averagesteps = totalSteps/length(trials)

私の質問は、正しい確率を得るために cumsum が実際に何をしているのかということです。言われなければ使わなかったので、cumsum が間違った答えを与えているようにさえ感じます。

4

2 に答える 2

0

あなたのコード:

CumProb = Prob;
for n = 2:length(Prob)
    CumProb(n) = CumProb(n-1) + Prob(n);
end

に等しい:

CumProb = cumsum(Prob)
于 2014-11-16T00:09:13.433 に答える