Math and Code: Poisson Heart Beat

For the code, see this GitHub link:
github.com/pieteradejong/joie-de-code/blob/master/PoissonHeartbeat.py

This code models a Poisson process. As you can see at the above link, we have a PoissonHeartbeat class that prints a “ping”-type statement on every event generated by the process. Let’s look at some of the more interesting lines of code.

self.events = events 
self.lambd = lambd

Explanation: events and lambd are instance variables, since every instance will have its own specific values for these variables. Note that lambd cannot be named lambda, since that is a reserved name in Python.

intervals = [random.expovariate(self.lambd) for i in range(self.numberOfEvents)]

We’re using a list expression to generate random time intervals drawn from the exponential distribution. We sample from that distribution using random.expovariate, which takes a lambda parameter and returns a random real-valued sample from the exponential distribution fully determined by lambda.

for v in intervals:
      time.sleep(v)
      print "ping! after interval ", v

We use Python’s time.sleep to actually simulate the Poisson process based on the previously generated random time intervals.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.