<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 WT-Übung 2 - Aufgabe 7b
Ein Schimpanse hat zwei Urnen vor sich
Step1:  Simulation
Es werden $N$ zufällige Spiele durchgeführt und ausgewertet. Dabei werden die absoluten Häufigkeiten der (Indikator-)Ereignisse
$$
    Z_k = {\text{Spiel endet nach genau $k$ Zügen}},\quad k \leq 10
$$
bestimmt.
Step2:  Spielverläufe
Step3:  Ergebnisse
Absolute Häufigkeiten der Anzahl gezogener Kugeln pro Spiel bei $N$ Durchläufen
<ASSISTANT_TASK:>
Python Code:
%matplotlib inline
import matplotlib.pyplot as plt
from random import random, choice
# Kugeln (Werte erstmal unwichtig)
black, red, green, white = 0, 1, 2, 7
# Urnen
kugeln_urne1 = [white, white, white, black, black]
kugeln_urne2 = [white, green, green,   red,   red]
# Wkeiten
p_urne1 = 0.7
p_urne2 = 0.3  # 1 - p_urne1
def color(s, c): return '\033[1;3{}m{}\033[0m'.format(c, s)
Explanation: WT-Übung 2 - Aufgabe 7b
Ein Schimpanse hat zwei Urnen vor sich: Urne 1 enthält drei weiße und zwei
schwarze, Urne 2 eine weiße, zwei grüne und zwei rote Kugeln. Über das
Verhalten des Schimpansen ist bekannt, dass er mit der Wahrscheinlichkeit 0,7
in die erste und mit der Wahrscheinlichkeit 0,3 in die zweite Urne greift.
Der Schimpanse darf nun solange Kugeln (ohne Zurucklegen) ziehen bis er eine
rote Kugel wählt. Wie groß ist die Wahrscheinlichkeit, dass er maximal drei
Kugeln zieht?
Parameter
End of explanation
N = 100000       # Anzahl der Spiele
spiele = []      # Spielverläufe
h_N = [0] * 11   # absolute Häufigkeiten der Ereignisse Z_k
for _ in range(N):
    urne1, urne2 = list(kugeln_urne1), list(kugeln_urne2)  # copy
    spiel, kugel = [], None  
    
    while kugel != red:
        # Urne auswählen (Urne 1 kann leer sein, dann Urne2)
        urne = urne1 if random() < p_urne1 and urne1 else urne2
        # zufällige Kugel aus der ausgewählten Urne nehmen und merken
        kugel = choice(urne)
        del urne[urne.index(kugel)]        
        spiel.append(color('●' + '₁₂'[urne == urne2], kugel))
        
    h_N[len(spiel)] += 1
    spiele.append(spiel)
Explanation: Simulation
Es werden $N$ zufällige Spiele durchgeführt und ausgewertet. Dabei werden die absoluten Häufigkeiten der (Indikator-)Ereignisse
$$
    Z_k = {\text{Spiel endet nach genau $k$ Zügen}},\quad k \leq 10
$$
bestimmt.
End of explanation
for n, spiel in zip(range(20), spiele):
    print("{:2}    {}".format(n + 1, ' '.join(spiel)))
Explanation: Spielverläufe
End of explanation
plt.stem(h_N)
plt.axvspan(0, 3.5, 0, 1, alpha=0.2)
plt.xlabel('Anzahl Runden $k$')
plt.ylabel('absolute Häufigkeit $h_N(Z_k)$');
print("P(Z₁ + Z₂ + Z₃) ≅ {:.4}".format(sum(h_N[:4]) / N))
Explanation: Ergebnisse
Absolute Häufigkeiten der Anzahl gezogener Kugeln pro Spiel bei $N$ Durchläufen
End of explanation
<END_TASK>