Как я могу отобразить эти результаты броска монеты в MATLAB? - PullRequest
1 голос
/ 15 мая 2011

Я пишу сценарий, чтобы представить монету, перевернутую 100 раз, и я хочу построить процентное количество случаев появления «голов» по ​​мере прохождения этих 100 испытаний.Кажется, я не могу получить график, показывающий количество голов / испытаний в сравнении с испытаниями с 1 по 100. На графике показаны все головы / испытания в точке 100 на оси X.

Этокод, который я использую:

counter=0
wins=0
for k=1:100
    x=rand
    counter=counter+1
    if (x<0.5)
        x_coin=0
    else
        x_coin=1
        wins=wins+1    
    end
    B(k)=counter
    C(k)=wins
    fraction=C.*(1./B)
    plot(k,fraction)
end

Ответы [ 2 ]

7 голосов
/ 15 мая 2011

Нет необходимости зацикливаться здесь.Просто

> n= 100;
> trials= 1: n;
> x= rand(1, n);
> C= cumsum(x< .5);
> plot(trials, C./ trials)
2 голосов
/ 15 мая 2011

Во-первых, вы храните данные, которые вам нужны, в своих векторах B и C, поэтому нет реальной причины также вызывать команду построения в пределах вашего цикла. Просто сделайте один заговор после того, как ваш цикл закончен.

Во-вторых, когда вы вызываете PLOT , вы передаете переменную цикла k в качестве первого аргумента, и она имеет только одно значение 100 в конце цикла. Вот почему все ваши точки в fraction построены при значении х 100.

Чтобы получить нужный вам сюжет, просто сделайте это после вашего цикла:

plot(B,C./B);

Кроме того, вам не нужно хранить вектор B. Вы можете просто сделать это после цикла:

B = 1:100;
plot(B,C./B);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...