醉汉回家-北太天元学习22
上一节,我们学习了随机模型,醉汉的状态 x_t 表示 醉汉所处的位置,
我们用矩阵向量的语言重新对这个例子编程,
另外,我统计了不同位置点出现的次数, 在画图后,我发现原来的模型
有些问题. 发现的问题是醉汉的在两个高频出现的位置之间会出现一个0次出现

因此对原来的模型做了修改,计算出来的结果更加的合理。
我在视频中来讲发现的问题和改进。
x_t = [0;0] 表示初始时刻的位置
%北太天元模拟随机游走
clc;
clear all;
clf;
close all;
N = 100; % 每一次出发后走的总步数,每一步x方向和y方向上走+1或者-1的距离
总次数 = 40; % 走的总次数
x = zeros(2,N+1);
%初始位置 [0;0];
xy = zeros(201);
ij0 = [101; 101];
xy(x(:,1) + ij0) = 1;
for m=1:总次数
for n = 1:N % 随机确定每一步走到哪个位置
% rand(2,1) 生成两个(0,1)均匀分布的随机数组成的2x1矩阵
% move_rand 等概率获得 -1, 0, 1 三个数值
% move_rand_old 等概率获得 -1, 1 三个数值
move = move_rand_old(rand(2,1) );
x(:, n+1) = x(:, n) + move;
xy(ij0(1) + x(1,n+1), ij0(2) +x(2,n+1)) = xy(ij0(1) + x(1,n+1), ij0(2) +x(2,n+1)) + 1;
end
end
hold off
[X,Y]=meshgrid(-100:100,-100:100);
surf(X(75:125,75:125), Y(75:125,75:125), xy(75:125,75:125))
function move = move_rand(r)
move = zeros(size(r));
ind = find( r < 1/3 );
if ( ~isempty(ind) )
move(ind) = -1;
end
ind = find ( r >= 1/3 && r < 2/3);
if ( ~isempty(ind) )
move(ind) = 0;
end
ind = find( r > 2/3);
if ( ~isempty(ind) )
move(ind) = 1;
end
end
function move = move_rand_old(r)
move = sign(r-0.5);
end