Add exercise 1.23
This commit is contained in:
parent
673fa5f790
commit
14be29ba1b
1 changed files with 80 additions and 0 deletions
80
chapter-1/ex-23.py
Executable file
80
chapter-1/ex-23.py
Executable file
|
@ -0,0 +1,80 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import numpy as np
|
||||
import random
|
||||
|
||||
registered_events = {}
|
||||
|
||||
# We'll define events as predicates:
|
||||
# Also I'll use some decorators, just to show off
|
||||
|
||||
# the decorator:
|
||||
def event(event_pred):
|
||||
key = event_pred.__name__
|
||||
val = (event_pred, 0)
|
||||
registered_events[key] = val
|
||||
return event_pred
|
||||
|
||||
@event
|
||||
def omega(value):
|
||||
return True
|
||||
|
||||
@event
|
||||
def a1(value):
|
||||
return value % 2 == 0
|
||||
|
||||
@event
|
||||
def b1(value):
|
||||
return value <= 4
|
||||
|
||||
@event
|
||||
def ab1(value):
|
||||
return a1(value) and b1(value)
|
||||
|
||||
@event
|
||||
def a2(value):
|
||||
return value % 2 == 0
|
||||
|
||||
@event
|
||||
def b2(value):
|
||||
return value <= 5
|
||||
|
||||
@event
|
||||
def ab2(value):
|
||||
return a2(value) and b2(value)
|
||||
|
||||
random.seed()
|
||||
def dice_experiment(reps):
|
||||
for i in range(reps):
|
||||
r = random.randint(1,6)
|
||||
for key, value in registered_events.items():
|
||||
func, count = value
|
||||
if func(r):
|
||||
count += 1
|
||||
newval = (func, count)
|
||||
registered_events[key] = newval
|
||||
|
||||
dice_experiment(1000)
|
||||
|
||||
total = registered_events["omega"][1]
|
||||
print(f"Total = ", registered_events["omega"][1]/total)
|
||||
print(f"P^(A1) = ", registered_events["a1"][1]/total)
|
||||
print(f"P^(B1) = ", registered_events["b1"][1]/total)
|
||||
print(f"P^(A1)P^(B1) = ", registered_events["a1"][1]/total * registered_events["b1"][1]/total)
|
||||
print(f"P^(AB1) = ", registered_events["ab1"][1]/total)
|
||||
print(f"P^(A2) = ", registered_events["a2"][1]/total)
|
||||
print(f"P^(B2) = ", registered_events["b2"][1]/total)
|
||||
print(f"P^(A2)P^(B2) = ", registered_events["a2"][1]/total * registered_events["b2"][1]/total)
|
||||
print(f"P^(AB2) = ", registered_events["ab2"][1]/total)
|
||||
|
||||
"""Example output:
|
||||
|
||||
Total = 1.0
|
||||
P^(A1) = 0.494
|
||||
P^(B1) = 0.667
|
||||
P^(A1)P^(B1) = 0.329498
|
||||
P^(AB1) = 0.329
|
||||
P^(A2) = 0.494
|
||||
P^(B2) = 0.835
|
||||
P^(A2)P^(B2) = 0.41249
|
||||
P^(AB2) = 0.329"""
|
Loading…
Add table
Reference in a new issue