In [1]:
from itertools import product
NETWORK_FMT = """\
{i} ┌─{r[0]}─┐
{s} E ──┬─┤ {sepr} ├──────{r[2]}─────┬── A
{i} │ └─{r[1]}─┘ {sepr} │
{i} └─────────{r[3]}─────{r[4]}──┘
"""
def format_network(relais, pre='', post='', lenr=2):
return NETWORK_FMT.format(s=pre, r=relais,
i=' '*len(pre), sepr=' '*lenr)
print(format_network(['████'] * 5, lenr=4, pre=' ' * 10))
In [2]:
Ω = list(product([0, 1], repeat=5))
state = ['\033[1;31m┚┖\033[0m', '\033[1;32m━━\033[0m']
for n, r in enumerate(Ω):
print(format_network(relais=[state[ri] for ri in r],
pre='{:^4d}'.format(1 + n)))
Gesucht ist die Wahrscheinlichkeit für das Ereignis S = {Strom fließt von A zu E}
In [3]:
def check_event_S(r):
return ((r[0] or r[1]) and r[2]) or (r[3] and r[4])
Nun wird für alle möglichen Ergebnisse überprüft, ob sie zu Ereignis S gehören
In [4]:
count_S = sum(check_event_S(r) for r in Ω)
print('|S| = {}'.format(count_S))
In [5]:
print("\nP(S) = {}/{} = {:.5}".format(count_S, len(Ω), count_S / len(Ω)))