在matlab中模拟随机游动

在matlab中模拟随机游动,matlab,Matlab,我有一个变量x,它根据以下规则进行随机游动: x(t+1)=x(t)-1; probability p=0.3 x(t+1)=x(t)-2; probability q=0.2 x(t+1)=x(t)+1; probability p=0.5 a) 我必须创建这个初始化为零的变量,并编写一个for循环,执行100个步骤,运行10000次,将每个最终值存储在xfinal中 b) 我必须绘制xfinal(直方图)的概率分布,选择一个箱子大小并进行归一化!!*我必须报告xfinal的均值和方差 c)

我有一个变量x,它根据以下规则进行随机游动:

x(t+1)=x(t)-1; probability p=0.3
x(t+1)=x(t)-2; probability q=0.2
x(t+1)=x(t)+1; probability p=0.5
a) 我必须创建这个初始化为零的变量,并编写一个for循环,执行100个步骤,运行10000次,将每个最终值存储在xfinal中 b) 我必须绘制xfinal(直方图)的概率分布,选择一个箱子大小并进行归一化!!*我必须报告xfinal的均值和方差 c) 我必须应用中心极限定理重新创建分布,并在同一个图上绘制概率分布

如果您能告诉我如何选择料仓大小、直方图标准化以及如何尝试第c部分,我们将不胜感激 非常感谢你的帮助

p=0.3;
q=0.2;
s=0.5;
numberOfSteps = 100;
maxCount = 10000;
for count=1:maxCount
    x=0;
    for i = 1:numberOfSteps
        random = rand(1, 1);
        if random <=p
            x=x-1;
        elseif random<=(p+q)
            x=x-2; 
        else
            x=x+1;
        end
    end
    xfinal(count) = x;
end
[f,x]=hist(xfinal,30);
figure(1)
bar(x,f/sum(f));
xlabel('xfinal')
ylabel('frequency')
mean = mean(xfinal)
variance = var(xfinal)
p=0.3;
q=0.2;
s=0.5;
步数=100;
最大计数=10000;
对于count=1:maxCount
x=0;
对于i=1:numberOfSteps
随机=兰德(1,1);

如果第一个问题是随机的,请查看mathworks主页上的帮助

[neelement,centers]=hist(数据,NBIN)

您不选择存储箱的大小,而是选择存储箱的数量。NeElements给出了每个箱子的元素,中心是所有箱子的中心。所以说,打电话也是一样的

hist(数据,NBIN)

作为

除了表示不同(线或桩)。要规范化,只需将元素除以和(元素)


对于c,这里的i.i.d.变量,如果变量是实变量或复杂变量,实际上是不同的。然而,对于实变量,简而言之,中心极限定理告诉你,对于大量样本,分布将限制正态分布。因此,如果样本是真实的,您只需假设一个正态分布,计算均值和方差,并将其绘制为正态分布。如果变量是复杂的,那么每个变量都将是正态分布的,这意味着您将采用瑞利分布。

使用
hist
可以选择一个箱子大小(通过给出一个等距箱子中心的向量),谢谢大家之前的帮助!!现在我面临另一个问题!!当我运行下面的代码时,应该表示由中心极限定理生成的曲线的直线比直方图要低得多!我该怎么办?这应该会发生吗?谢谢你p=0.3;q=0.2;s=0.5;步数=100;最大计数=10000;%count=1的程序模拟次数:maxCount x=0;对于i=1:numberOfSteps random=rand(1,1);如果随机xlabel('xfinal')ylabel('frequency')均值(xfinal)方差=var(xfinal);按住%应用中心极限定理%查找平均值Xp=-1;Xq=-2;Xs=1;mu=Xp.*p+Xq.*q+Xs.*s;muN=numberOfSteps.*mu;%求方差σ=(Xp)。^2.*p+(Xq)。^2.*q+(Xs)。^2.*s;sigmaN=numberOfSteps.*(sigma-(mu)。^2);%根据上一张图上的CLT绘制曲线Y=1/sqrt(2*pi*(sigmaN))*exp(-(x-(muN))。^2/(2*(sigmaN));图(x,Y,'-Y')
  [nelements,centers] = hist(data,nbins);
  plot(centers,nelements);