Newer
Older
notebooks / py / poisson_generator.py
#%%
import random
from math import log
import matplotlib.pyplot as plt

class PoissonProcess():
  def __init__(self, **kwargs):
    self.lam = kwargs.get("lam", 5) # rate
    self.size = kwargs.get("size", 100)

  def generate(self):
    _time = 0
    events = []
    for i in range(self.size):
      p = random.random()

      _interval = - log(1-p) / self.lam
      _time = _time + _interval

      events.append(_time)
    return events

#1 (events)
poi = PoissonProcess(lam = 5).generate()
print(poi)

#matplotlib: x=index, y=poi[index]
plt.plot(range(100),poi)


#2 (points)
import numpy as np
poi = np.random.poisson(5,100)
plt.plot(poi)

plt.show()
#%%