Programmieraufgabe 3

Wichtig: Damit alle benötigten Pakete richtig eingebunden werden, führen Sie die nächste Zelle einmal aus, sobald Sie das Notebook neu öffnen.

In [1]:
# some setup
import numpy as np # makes numpy routines and data types available as np.[name ouf routine or data type]
import matplotlib.pyplot as plt # makes plotting command available as plt.[name of command]

from ipywidgets import interactive
import random

Zufällige Teilmengen und Monte Carlo Simulation

a) Implementieren Sie einen Algorithmus, der eine (pseudo)zufällige $n$-elementige Teilmenge aus der Menge $\{1,\ldots,m\}$ auswählt. Die Teilmenge kann als Liste gespeichert werden, und soll über eine Funktion $\texttt{rsubset[m,n]}$ abrufbar sein.

In [11]:
random.seed("Nachname")

# Fuegen Sie hier Ihre Loesung ein.

b) Verwenden Sie die Funktion $\texttt{rsubset[m,n]}$ um eine Funktion $\texttt{rhypgeom[m,r,n]}$ zu definieren, die eine Stichprobe von der hypergeometrischen Verteilung mit Parametern $m$, $r$ und $n$ erzeugt.

In [ ]:
# Fuegen Sie hier Ihre Loesung ein.

c) Obwohl jede $n$-elementige Teilmenge mit derselben Wahrscheinlichkeit auftritt, empfindet man Mengen $\omega \subset \{1,2,\ldots,m\}$, die viele aufeinander folgende Zahlen enthalten, als weniger "zufällig". Diese Eigenschaft quantifizieren wir nun durch die Zahl

\begin{equation} X(\omega) := \max\{ k \, : \, k \text{ aufeinander folgende Zahlen gehoeren zu } \omega \}\, . \end{equation}

Explizite Formeln für die Wahrscheinlichkeiten

\begin{equation} p_X(k) = P\big[ \{ \omega \, : \, X(\omega) = k \} \big] \end{equation}

unter der Gleichverteilung auf den $n$-elementigen Teilmengen von $\{1,2,\ldots,m\}$ sind schwierig zu finden. Ein möglicher Ausweg sind Monte Carlo Schätzer. Dazu simuliert man $s$ zufällige $n$-elementige Teilmengen $\omega_1, \ldots, \omega_s$ und berechnet die relativen Häufigkeiten

\begin{equation} \hat p_X(k) = \frac{ \big|\{ 1 \leq i \leq s \, : \, X(\omega_i) = k \}\big| }{s} \end{equation}

als Schätzwert für die Wahrscheinlichkeiten $p_X(k)$.

Berechnen Sie Monte-Carlo Schätzer für $n=15$, $m=30$ und verschiedene Werte $s$ zwischen $1$ und $1000$. Stellen Sie $\hat p_X$ jeweils graphisch dar.

In [ ]:
# Fuegen Sie hier Ihre Loesung ein.