Initial commit

This commit is contained in:
Pim Nelissen
2024-06-30 11:26:36 +02:00
parent 14fb55cb5e
commit e42049c981
9 changed files with 534 additions and 0 deletions

27
_simulations/event.py Normal file
View File

@ -0,0 +1,27 @@
import bisect
import random
class Event:
def __init__(self, dist, parent=None, daughter=None):
self.parent = parent
self.daughter = daughter
if not parent == daughter == None:
self.name = f'{parent.name} => {daughter.name}'
self.event_time = self.generate_event_time(dist.cdf, dist.time_range)
def generate_event_time(self, cdf, time_range):
d_bin = time_range[1] - time_range[0] # define discrete bin
r = random.random()
i = bisect.bisect_left(cdf, r) # from the left, find the nearest value to r in the CDF
if i:
pass
else:
i = 0
t = time_range[i]
t += random.random() * d_bin # this avoids issues with the discretization selection (for continuum quantities)
return t