MATLAB Answers


Random Walk on 2D Modification

Asked by Ege Tunç on 26 Dec 2018
Latest activity Commented on by Ege Tunç on 6 Jan 2019
I have 2D random walk code part for neutrons. However, the code includes some conditions, 2 of them are:
  • on the next step the neutron cannot step back, but only forward, left or right ,
  • the probability to go forward is twice more than changing a direction
I could not modified the code for "cannot step back" part. Also, i have no idea how to make the probability is doubled for not changing direction. Since, if it's once changed direction it has the change to go straight forward is still doubled.
Here's the code:
N = 100; % Length of the x-axis, also known as the length of the random walks.
M = 100; % The amount of random walks.
x_t(1) = 0;
y_t(1) = 0;
for m=1:M
for n = 1:N
A = sign(randn);
x_t(n+1) = x_t(n) + A;
A = sign(randn);
y_t(n+1) = y_t(n) + A;
plot(x_t, y_t);
hold on
grid on;
set(gcf, 'Units', 'Normalized', 'Outerposition', [0, 0.05, 1, 0.95]);
axis square;


Show 1 older comment
I though "close" means, the question is answered, no more answers needed. Am i wrong?
"close" means make it invisible to the public, such as for a question that needs clarification from the author.
okay, i opened it. sorry for my misunderstanding

Sign in to comment.

1 Answer

Answer by Walter Roberson
on 26 Dec 2018
Edited by Walter Roberson
on 26 Dec 2018
 Accepted Answer

dd = randi(4)
for ss = 1:500
rr = rand;
if rr < 1/4
dd = 1+mod(dd,4) %next higher direction
elseif rr < 1/2
dd = 1+mod(dd-2,4) %next lower direction
end % 50 percent stays same direction
if dd==1
yy=yy+1; %north
elseif dd==2
xx=xx+1; %east
elseif dd==3
yy=yy-1; %south
xx=xx-1; %west
plot here probably


Sign in to comment.