随机走动-附matlab程序仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息与随机性报告
随机走动
(1)随机走动回到零点的概率
a.一维随机走动:假设有一只青蛙,它处在一维坐标系的零点处,有1/2的概率向左跳,有1/2的概率往右跳。
向左跳,坐标减1,向右跳,坐标加1。
进行10000次试验,青蛙走的最大步数为10000。
程序;
clear all
clc;
b=0;
for i=1:10000;
a=0;
for j=1:10000
x=rand;
if x>0.5
a=a+1;
else
a=a-1;
end
if a==0;
pp=j;
b=b+1;
break;
end
end
end
return1=b/10000;%返回的概率
运行结果:
返回的概率为99.12%,因此可以认为,一维随机走动一定会回到原点。
b.二维随机走动:假设青蛙处在二维坐标系中,每一次走动它向上向下向左向右移动的概率均为1/4,考虑它能回到原点的概率。
进行1000次试验,青蛙走的最大步数为1000000。
程序:
clear all
clc;
total=0;
for i=1:1000;
a=0;
b=0;
for j=1:1000000
x=rand;
y=rand;
if x>0.5;
x=1;
else
x=-1;
end
if y>0.5
a=a+x;
else
b=b+x;
end
if a==0 && b==0;
pp=j;
total=total+1;
break;
end
end
end
return2=total/1000;%返回的概率
运行结果:
可以看到,青蛙回到原点的概率为97.63%,因此可以认为在二维随机走动中,青蛙一定是可以回到原点的。
c.三维随机走动:假设青蛙处在三维坐标系中,每一次走动它移动的方向有八个,每个方向的概率为1/8,考虑它能回到原点的概率。
进行1000次试验,青蛙走的最大步数为100000。
程序:
clear all
clc;
total=0;
for i=1:1000;
a=0;
b=0;
c=0;
for j=1:100000
x=rand;
y=rand;
if x>0.5;
x=1;
else
x=-1;
end
if y>0.667
a=a+x;
else if y>0.333
b=b+x;
else
c=c+x;
end
end
if a==0 && b==0 &&c==0;
pp=j;
total=total+1;
break;
end
end
end
return3=total/100;%返回的概率
运行结果:
可以看到,在这种情况下,青蛙回到原点的概率为33.8%。
与前两种情况不同,青蛙不一定会回到原点,当增加青蛙最大步数的时候,回到原点的概率依然在34%左右。
(2)一维随机走动回到原点所需的步数
在(1)中我们知道了一维随机走动是一定会回到原点的,现在继续研究回到原
点所需要的步数。
通过对程序的测试,发现当随机走动的步数控制在100以内时,青蛙总能回到原点。
因此设置最大步数为100,进行10000次试验,统计青蛙第一次回到原点时的步数。
程序:
clear all
clc;
for i=1:10000;
a=0;
for j=1:100
x=rand;
if x>0.5
a=a+1;
else
a=a-1;
end
if a==0;
pp=j;
break;
end
end
y(i)=pp;
end
t=tabulate(y)
q=t(:,1);
p=t(:,3);
k=t(:,2);
stem(q,p);xlabel('步数');ylabel('次数');title('一维随机走动')
运行结果:
可以看出:
1. 青蛙在第二步时回来的概率最大,并且超过50%。
2. 青蛙在偶数步时有可能回来,奇数步时无法回来。
3. 在30步以内,青蛙回来的概率大于5%,可以认为青蛙一定回到原点。
(3) 一维随机走动的均方差与均值
青蛙的停留位置与走动的步数有关,在这里我们观察与统计青蛙走动偶数步时停留位置的均方差与均值。
给定走动的步数从2到100,每种步数进行10000次试验,统计最终停留位置的均方差与均值。
程序:
clear all
clc;
for k=1:50
for i=1:10000;
a=0;
for j=1:k*2
x=rand;
if x>0.5
a=a+1;
else
01000
2000
3000
4000
5000
6000
步数次数一维随机走动
a=a-1;
end
end
y(i)=a;
end
junfang=var(y);
junzhi=mean(y);
dd(k)=sqrt(junfang);
ff(k)=junzhi;
end
k=2:2:100;
stem(k,dd);
figure(2);stem(k,ff);
结果:
010********
60708090100
01
2
3
4567
8
9
10
停留位置的均方差步数
(注:可编辑下载,若有不当之处,请指正,谢谢!)
010********
60708090100
-0.2-0.15
-0.1
-0.05
00.050.1
0.15
0.2
停留位置的均值步数。