Clear Filters
Clear Filters

Why does my random walk simulation come out so weird?

4 views (last 30 days)
Why does my graph come out so weird? I've provided the code:
N = 1000;
M = 500;
P = cumsum(full(sparse(1:N, randi(M,1,N), [0 2*randi([0 1],1,N-1)-1], N, M))) ;
figure (2);
hold on ;
for S=1:size(P,2)
title('Random walk 2')
xlabel('#Step') ;
ylabel('Distance') ;
hold off;
I was told I'm plotting along the wrong dimension of S, but what does that mean? When I alter it, the graph either crashes or gives ,e a straight line.

Answers (1)

William Rose
William Rose on 25 Sep 2023
Your formula introduces an increaing probability of "stay the same on each step" as M, the number of walks, grows. Is that your intent? I doubt it. Here are plots of what happ[ens with your code when N=100, and M=1, M=2, and M=5. Notice the increase in the probability of making a "step" of 0, and M grows.
You can fix it by modifying (simplifying) your cumsum() statement.
  1 Comment
William Rose
William Rose on 25 Sep 2023
Edited: William Rose on 25 Sep 2023
[edit: add explanation of code with and without 0 as a step option]
The line
P = cumsum(full(sparse(1:N, randi(M,1,N), [0 2*randi([0 1],1,N-1)-1], N, M))) ;
causes (M-1)/M of the random steps (which would otherwise be +1 or -1) to become zero.
Therefore, when M=1, none of the steps get reset to zero, and all steps are therefore +1 or -1. When M=5, you get 4/5=80% zeros. When M=500, as in your original example, you get 499/500=99.8% zeros. This is why your random walks look weird.
If the above behavior is not desired, and if you want random steps of -1, 0, or +1 at every time point of every walk, then do:
P=cumsum(zeros(1,M);randi([-1 1],N-1,M));
Try it. It yields a nice looking set of random walks. See below for N=300,M=20 and N=1000,M=500.
If you want only -1 or +1 steps, then do
P=cumsum([zeros(1,M);2*randi([-1 1],N-1,M)-1]); % steps: -1, +1
This set of walks spreads out a bit faster than the earlier set, since 0 is not an option.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!