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