function randwalk
ra=0;
for i=1:10
ra=ra+walk(i);
end
mr=ra/10%10次運行平均值
function rr=walk(x)
clc;close all;
z=0; % 設(shè)置初始數(shù)值,這里利用一個復數(shù)來表示位置
rand('state',x); % 初始化隨機數(shù)的狀態(tài)
ph=plot(z);hold on; % 繪圖
T=1; % 計算時間的參數(shù)
z1=1; % 位置的中間變量
ti=title('time = 0','Fontsize',14,'Fontname','Times new roman'); % 在圖題處實時顯示時間
while T<1001; % 進行循環(huán)1000次進行計算
[dx,dy]=choose_D(0.25,0.25,0.25,0.25); % 隨機生成一個位移量
z1=z+[dx+i*dy]; % 更新位置數(shù)值
plot(real([z,z1]),imag([z,z1])); % 連接t時刻和t+1時刻兩點繪制線段
z=z1; % 更新z的數(shù)值
set(ti,'String',['time = ',num2str(T)]); % 更新圖題處的時間數(shù)值
T=T+1; % 時間值更新
pause(0.01); % 暫停一下,顯示動畫效果
end
rr=abs(z)
function [dx,dy]=choose_D(p1,p2,p3,p4);
% p1=0.2; % 向左運動的幾率
% p2=0.3; % 向上運動的幾率
% p3=0.1; % 向右運動的幾率
% p4=0.4; % 向下運動的幾率
r=rand; % 產(chǎn)生一個隨機數(shù)
if r
dx=-1; % x方向的隨機移動量
dy=0; % y方向的隨機移動量
elseif r
dx=0; % x方向的隨機移動量
dy=-1; % y方向的隨機移動量
elseif r
dx=1; % x方向的隨機移動量
dy=0; % y方向的隨機移動量
else
dx=0; % x方向的隨機移動量
dy=1; % y方向的隨機移動量
end