Random Walk (Python implementation)

Enough boring theory. Let`s take a break to get some coding knowledge. So, to code the random walk, we basically need some libraries in python, some for math and some others for curve fitting.

Required Libraries

  1. matplotlib This is an external library to help you plot a curve. To install this library, enter the following code in your cmd.
     pip install matplotlib 

    This would be enough to get you through the installation.

  2. Numpy It is also an external Python library that helps you work with arrays and matrices. To install the library, enter the following code in cmd.
     pip install numpy 
  3. random This is a built-in python library that we will use to generate random points.

One-dimensional random walk . An elementary example of a random walk is a random walk over a string of integers, which starts at 0 and is shifted by +1 or? 1 with equal probability.

So let`s try to implement 1-D random walk in python.

Output:

Higher dimensions In higher dimensions, many randomly passed points have interesting geometric properties. In fact, a discrete fractal is obtained, that is, a set that demonstrates stochastic self-similarity on a large scale. On a small scale, you can observe "irregularities" arising from the net on which the walk is performed. Lawler`s two books mentioned below are good sources on this topic. The trajectory of a random walk — it is a set of visited points, treated as a set that does not account for when the walk has reached a point. In one dimension, the trajectory — it`s just all the points between the minimum height and the maximum height that the walk has reached (on average, both orders of magnitude? N).

Let`s try to create a random walk in 2D.

# Python code for 1- D random walk.

import random

import numpy as np

import matplotlib.pyplot as plt

 
# Probability to move up or down

prob = [ 0.05 , 0.95

 
# statically defining the starting position  

start = 2  

positions = [start]

 
# generate random dots

rr = np.random.random ( 1000 )

downp = rr & lt; prob [ 0 ]

upp = rr & gt; prob [ 1 ]

 

 

for idownp, iupp in zip (downp, upp):

down = idownp and positions [ - 1 ] & gt;  1

up = iupp and positions [ - 1 ] & lt;  4

positions.append (positions [ - 1 ] - down + up)

 
# plotting a random walk in 1D
plt.plot (positions)
plt.show ()

# Python code for 2D random walk.

import numpy

import pylab

import random

 
#determine the number of steps

n = 100000

 
# create two arrays to store x and y coordinates
# of size is equal to the number of si ze and filled with zeros

x = numpy .zeros (n)

y = numpy.zeros (n)

 
# filling coordinates with random values ​​

for i in range ( 1 , n):

val = random.randint ( 1 , 4 )

if val = = 1 :

x [i] = x [ i - 1 ] + 1

  y [ i] = y [i - 1 ]

elif val = = 2 :

  x [i] = x [i - 1 ] - 1

y [i] = y [i - 1 ]

  elif val = = 3 :

x [i] = x [i - 1 ]

  y [i] = y [i - 1 < / code> ] + 1

else :

  x [i] = x [i - 1 ]

y [i] = y [ i - 1 ] - 1

  

 
# conspiracies:

pylab.title ( "Random Walk ($ n =" + str (n) + " $ steps) " )

pylab.plot (x, y)

pylab.savefig ( "rand_walk" + str (n) + ". png " , bbox_inches = "tight" , dpi = 600 )

pylab.show ()

Output:

Applications

  1. In computer networks, random Traversals can simulate the number of transmission packets buffered on the server.
  2. In population genetics, random walks describe the statistical properties of genetic drift.
  3. In image segmentation, random walks are used to define labels (i.e. E. "Object" or "background") associated with each pixel.
  4. In brain research, random walks and enhanced random walks are used to simulate neuronal firing cascades in the brain.
  5. Random walks have also been used to sample huge online graphs such as online social media.

Links
1. Wikipedia — A random walk
2. Stackoverflow — Random Walk 1D
3. matplotlib documentation

This article is courtesy of Subhajit Saha . If you are as Python.Engineering and would like to contribute, you can also write an article using contribute.python.engineering or by posting an article contribute @ python.engineering. See my article appearing on the Python.Engineering homepage and help other geeks.

Please post comments if you find anything wrong or if you`d like to share more information on the topic discussed above.