Matlab 中的随机游走

Random Walk in Matlab

我正在尝试创建一个简单的随机游走。这是我写的代码。

 n=50;
 p=0.5;

Y=zeros(n,1);
X=zeros(n,1);
X(1)=0;

for i=1:length(n)
    Y(i,1)=(rand(1)<=p);
end

for i=1:length(n)
    X(i+1)=X(i)+(2*Y(i)-1);
end
plot(1:n,X,'.-')

但是,如果我检查存储随机伯努利变量的 Y,我会得到全零。为什么会这样?

我得到了这样的情节,
这看起来不像是随机游走。有人可以告诉我我做错了什么吗

关于 Noel 的评论,确实 length(n) 应该替换为 n 并且绘图函数应该是 plot(1:(n+1),X,'.-') 而不是因为 X 中有 n+1 个元素。你最终结果如下:

n=50;
p=0.5;

Y=zeros(n,1);
X=zeros(n,1);
X(1)=0;

for i=1:n
    Y(i,1)=(rand(1)<=p);
end

for i=1:n
    X(i+1)=X(i)+(2*Y(i)-1);
end
plot(1:(n+1),X,'.-')

情节看起来更像是随机游走: