如何在MATLAB中绘制这些抛硬币结果?

时间:2011-05-15 00:37:25

标签: matlab plot

我正在编写一个代表硬币翻转100次的脚本,我想绘制这100个试验进展时“头”的出现百分比。我似乎无法得到绘图显示头部/试验数量与试验1到100的关系图。该图显示了x轴上100点处的所有头部/试验。

这是我正在使用的代码:

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 个答案:

答案 0 :(得分:7)

无需循环播放。刚

> n= 100;
> trials= 1: n;
> x= rand(1, n);
> C= cumsum(x< .5);
> plot(trials, C./ trials)

答案 1 :(得分:2)

首先,您需要在向量BC中存储所需的数据,因此没有理由在循环中调用绘图命令。完成循环后,只需制作一个图。

其次,当你调用PLOT时,你将循环变量k作为第一个参数传递,并且它在循环结束时只有一个值为100。这就是为什么fraction中的所有点都被绘制为x值为100的原因。

要获得您想要的情节,只需在循环之后执行

plot(B,C./B);

或者,您不必存储向量B。您可以在循环后执行此操作:

B = 1:100;
plot(B,C./B);