Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is random.expovariate equivalent to a Poisson Process

I read somewhere that the python library function random.expovariate produces intervals equivalent to Poisson Process events.
Is that really the case or should I impose some other function on the results?

like image 591
hizki Avatar asked Dec 21 '11 15:12

hizki


2 Answers

On a strict reading of your question, yes, that is what random.expovariate does.

expovariate gives you random floating point numbers, exponentially distributed. In a Poisson process the size of the interval between consecutive events is exponential.

However, there are two other ways I could imagine modelling poisson processes

  1. Just generate random numbers, uniformly distributed and sort them.
  2. Generate integers which have a Poisson distribution (i.e. they are distributed like the number of events within a fixed interval in a Poisson process). Use numpy.random.poisson to do this.

Of course all three things are quite different. The right choice depends on your application.

like image 159
Adrian Ratnapala Avatar answered Sep 29 '22 16:09

Adrian Ratnapala


https://stackoverflow.com/a/10250877/1587329 gives a nice explanation of why this works (not only in python), and some code. In short

simulate the first 10 events in a poisson process with an averate rate of 15 arrivals per second like this:

import random
for i in range(1,10):
   print random.expovariate(15)
like image 35
serv-inc Avatar answered Sep 29 '22 16:09

serv-inc