Skip to content

Instantly share code, notes, and snippets.

@halexus
Created March 24, 2019 16:33
Show Gist options
  • Save halexus/20d198afed2f5733e37384d7b11d4ba7 to your computer and use it in GitHub Desktop.
Save halexus/20d198afed2f5733e37384d7b11d4ba7 to your computer and use it in GitHub Desktop.
Beispiel 16 UE Wahrscheinlichkeitstheorie
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Beispiel 16\n",
"\n",
"## (a)\n",
"\n",
"Auf wie viele Arten können vier weiße, drei blaue und zwei grüne Kugeln in eine Reihe gelegt werden?\n",
"***"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import itertools"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wir repräsentieren die in der Aufgabe genannten 9 färbigen Kugeln durch einen string, der aus 9 Zeichen entsprechend der Farbe besteht. In Python wird ein string als Sequenz von einzelnen Zeichen aufgefasst, wir können also alle Funktionen die mit Sequenzen arbeiten, insbesonders jene aus dem `itertools` Modul, auch für Strings verwenden. Wir erzeugen mit [`itertools.permutations`](https://docs.python.org/3/library/itertools.html#itertools.permutations) alle möglichen Permutationen der 9 Kugeln, ohne zu berücksichtigen, dass Elemente mehrfach vorkommen, da nicht alle Zeichen unterschiedlich sind. Den sich ergebenden Iterator wandeln wir in eine Menge mit der Funktion [`set`](https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset) um, dies entfernt alle Duplikate. Die Anzahl der Elemente dieser Menge erhalten wir mit der [`len`](https://docs.python.org/3/library/functions.html#len) Funktion."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1260\n"
]
}
],
"source": [
"print(len(set(itertools.permutations('wwwwbbbgg'))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Um die Anzahl der Anordnungen der Kugeln theoretisch zu ermitteln, gibt es zwei mögliche Modellierungen des Problems:\n",
"\n",
"1. Wir haben 9 verschiedene Plätze für unsere Kugeln. Zuerst wollen wir die 4 weißen Kugeln darauf platzieren. Es gibt $\\binom{9}{4}$ Möglichkeiten aus den 9 verfügbaren Plätzen 4 auszuwählen. Danach wollen wir von den verbleibenden 5 Plätzen 3 für die blauen Kugeln auswählen, dafür gibt es $\\binom{5}{3}$ Möglichkeiten. Nun verbleiben 2 Plätze für die 2 grünen Kugeln. Die theoretisch ermittelte Anzahl beträgt also $$\\binom{9}{4}\\cdot \\binom{5}{3} \\cdot \\binom{2}{2} = 1260$$\n",
"2. Für alle 9 Kugeln gibt es ohne Berücksichtigung, dass manche dieselbe Farbe besitzen, $9\\,!$ verschiedene Anordnungen. In der Gruppe der weißen Kugeln gibt es nun aber $4\\,!$ mögliche Permutationen, welche alle zur selben Permutation mit 9 Kugeln führen. Dasselbe Argument kann mit den 3 blauen, und 2 grünen Kugeln angewandt werden. Wenn wir das berücksichtigen kommen wir auf die folgende Zahl an möglichen Anordnungen: $$\\frac{9\\;!}{4\\,! \\cdot 3\\,! \\cdot 2\\,!} = 1260$$\n",
"\n",
"Beide theoretische Herangehensweisen führen also zur selben Antwort, die wir durch unsere Simulation mit Python erreicht haben."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## (b)\n",
"\n",
"In einer Urne befinden sich vier weiße, drei blaue und zwei grüne Kugeln. Aus dieser Urne werden gleichzeitig zwei Kugeln gezogen. Spieler A gewinnt, wenn beide Kugeln von der gleichen Farbe sind; Spieler B gewinnt, wenn die beiden Kugeln von verschiedener Farbe sind. Ist das ein faires Spiel? Führen Sie ein Experiment mit 20 Versuchsreihen durch und stellen Sie Ihre Erfahrungen mit einem Stabdiagramm grafisch dar!\n",
"***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notwendige `imports` "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from random import randint\n",
"import plotly.offline as pl # Für die Barcharts\n",
"import plotly.graph_objs as go # Für die Barcharts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wir definieren eine Funktion welche uns die relative Häufigkeit bei der N-maligen Durchführung des Experimentes liefert. N ist dabei das Argument der Funktion."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def relative_häufigkeit_gewinn_spieler_a(N=20):\n",
" '''Relative Häufigkeit, die Spieler A N durchgeführte Spiele gewinnt\n",
" N -- Anzahl der Exerimente (=Spiele) in der Versuchsreihe (default 20)'''\n",
" if N < 1:\n",
" N = 1\n",
" anzahl_spiele_A_gewonnen = 0 # Wieviele der N Spiele hat Spieler A gewonnen\n",
"\n",
" for i in range(N):\n",
" urne = list('wwwwbbbgg')\n",
" erste_kugel = urne.pop(randint(0, len(urne)-1))\n",
" zweite_kugel = urne.pop(randint(0, len(urne)-1))\n",
" if erste_kugel == zweite_kugel:\n",
" anzahl_spiele_A_gewonnen += 1\n",
" return anzahl_spiele_A_gewonnen/N"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Die Methode [`pop(index)`](https://docs.python.org/3/library/stdtypes.html#mutable-sequence-types) gibt das Element an der Stelle `index` zurück und entfernt es aus der Liste."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script><script type=\"text/javascript\">if (window.MathJax) {MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script><script>requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min']},});if(!window._Plotly) {require(['plotly'],function(plotly) {window._Plotly=plotly;});}</script>"
],
"text/vnd.plotly.v1+html": [
"<script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script><script type=\"text/javascript\">if (window.MathJax) {MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script><script>requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min']},});if(!window._Plotly) {require(['plotly'],function(plotly) {window._Plotly=plotly;});}</script>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"linkText": "Export to plot.ly",
"plotlyServerURL": "https://plot.ly",
"showLink": false
},
"data": [
{
"type": "bar",
"uid": "e9703e28-4242-4343-aa56-0b3aa8b9ef66",
"x": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
],
"y": [
0.1,
0.25,
0.1,
0.2,
0.3,
0.3,
0.2,
0.2,
0.35,
0.25
]
}
],
"layout": {
"barmode": "relative",
"title": {
"text": "Relative Häufigkeiten für 10 Versuchsreihen"
},
"xaxis": {
"title": {
"text": "Versuchsreihe"
}
},
"yaxis": {
"title": {
"text": "Relative Häufigkeit"
}
}
}
},
"text/html": [
"<div id=\"aaab68b5-a93a-4d33-bff2-c8f3569400a7\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";\n",
"if (document.getElementById(\"aaab68b5-a93a-4d33-bff2-c8f3569400a7\")) {\n",
" Plotly.newPlot(\"aaab68b5-a93a-4d33-bff2-c8f3569400a7\", [{\"x\": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \"y\": [0.1, 0.25, 0.1, 0.2, 0.3, 0.3, 0.2, 0.2, 0.35, 0.25], \"type\": \"bar\", \"uid\": \"e9703e28-4242-4343-aa56-0b3aa8b9ef66\"}], {\"barmode\": \"relative\", \"title\": {\"text\": \"Relative H\\u00e4ufigkeiten f\\u00fcr 10 Versuchsreihen\"}, \"xaxis\": {\"title\": {\"text\": \"Versuchsreihe\"}}, \"yaxis\": {\"title\": {\"text\": \"Relative H\\u00e4ufigkeit\"}}}, {\"showLink\": false, \"linkText\": \"Export to plot.ly\", \"plotlyServerURL\": \"https://plot.ly\"}); \n",
"}\n",
"});</script><script type=\"text/javascript\">window.addEventListener(\"resize\", function(){if (document.getElementById(\"aaab68b5-a93a-4d33-bff2-c8f3569400a7\")) {window._Plotly.Plots.resize(document.getElementById(\"aaab68b5-a93a-4d33-bff2-c8f3569400a7\"));};})</script>"
],
"text/vnd.plotly.v1+html": [
"<div id=\"aaab68b5-a93a-4d33-bff2-c8f3569400a7\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";\n",
"if (document.getElementById(\"aaab68b5-a93a-4d33-bff2-c8f3569400a7\")) {\n",
" Plotly.newPlot(\"aaab68b5-a93a-4d33-bff2-c8f3569400a7\", [{\"x\": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \"y\": [0.1, 0.25, 0.1, 0.2, 0.3, 0.3, 0.2, 0.2, 0.35, 0.25], \"type\": \"bar\", \"uid\": \"e9703e28-4242-4343-aa56-0b3aa8b9ef66\"}], {\"barmode\": \"relative\", \"title\": {\"text\": \"Relative H\\u00e4ufigkeiten f\\u00fcr 10 Versuchsreihen\"}, \"xaxis\": {\"title\": {\"text\": \"Versuchsreihe\"}}, \"yaxis\": {\"title\": {\"text\": \"Relative H\\u00e4ufigkeit\"}}}, {\"showLink\": false, \"linkText\": \"Export to plot.ly\", \"plotlyServerURL\": \"https://plot.ly\"}); \n",
"}\n",
"});</script><script type=\"text/javascript\">window.addEventListener(\"resize\", function(){if (document.getElementById(\"aaab68b5-a93a-4d33-bff2-c8f3569400a7\")) {window._Plotly.Plots.resize(document.getElementById(\"aaab68b5-a93a-4d33-bff2-c8f3569400a7\"));};})</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pl.init_notebook_mode(connected=True)\n",
"layout = {\n",
" 'xaxis': {'title': 'Versuchsreihe'},\n",
" 'yaxis': {'title': 'Relative Häufigkeit'},\n",
" 'barmode': 'relative',\n",
" 'title': 'Relative Häufigkeiten für 10 Versuchsreihen'\n",
"}\n",
"data = [go.Bar(\n",
" x = list(range(1, 11)),\n",
" y = [relative_häufigkeit_gewinn_spieler_a(20) for _ in range(10)]\n",
" )]\n",
"fig = go.FigureWidget(data, layout)\n",
"pl.iplot(fig)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wir erkennen, dass die relativen Häufigkeiten zwischen den verschiedenen Versuchsreihen stark streuen. Dies liegt daran, dass eine Versuchsreihe nur aus 20 durchgeführten Experimenten besteht. Im folgenden wollen wir deshalb einen Schieberegler in den Boxplot einbauen, um diese Zahl dynmaisch auf einen Wert zwischen 1 und 500 einzustellen."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f3778ab508f64c97b557e54f90497f42",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(IntSlider(value=200, description='N', max=500, step=10), Output()), _dom_classes=('widge…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"linkText": "Export to plot.ly",
"plotlyServerURL": "https://plot.ly",
"showLink": false
},
"data": [
{
"type": "bar",
"uid": "e76f3685-086e-41df-8b94-9694b65bb16f",
"x": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
],
"y": [
0.275,
0.245,
0.285,
0.25,
0.305,
0.305,
0.24,
0.285,
0.295,
0.28
]
}
],
"layout": {
"barmode": "relative",
"title": {
"text": "Relative Häufigkeiten für 10 Versuchsreihen / 200 Experimente pro Versuchsreihe"
},
"xaxis": {
"title": {
"text": "Versuchsreihe"
}
},
"yaxis": {
"title": {
"text": "Relative Häufigkeit"
}
}
}
},
"text/html": [
"<div id=\"7468ef79-a292-442d-91ed-bac9747e7e88\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";\n",
"if (document.getElementById(\"7468ef79-a292-442d-91ed-bac9747e7e88\")) {\n",
" Plotly.newPlot(\"7468ef79-a292-442d-91ed-bac9747e7e88\", [{\"x\": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \"y\": [0.275, 0.245, 0.285, 0.25, 0.305, 0.305, 0.24, 0.285, 0.295, 0.28], \"type\": \"bar\", \"uid\": \"e76f3685-086e-41df-8b94-9694b65bb16f\"}], {\"barmode\": \"relative\", \"title\": {\"text\": \"Relative H\\u00e4ufigkeiten f\\u00fcr 10 Versuchsreihen / 200 Experimente pro Versuchsreihe\"}, \"xaxis\": {\"title\": {\"text\": \"Versuchsreihe\"}}, \"yaxis\": {\"title\": {\"text\": \"Relative H\\u00e4ufigkeit\"}}}, {\"showLink\": false, \"linkText\": \"Export to plot.ly\", \"plotlyServerURL\": \"https://plot.ly\"}); \n",
"}\n",
"});</script><script type=\"text/javascript\">window.addEventListener(\"resize\", function(){if (document.getElementById(\"7468ef79-a292-442d-91ed-bac9747e7e88\")) {window._Plotly.Plots.resize(document.getElementById(\"7468ef79-a292-442d-91ed-bac9747e7e88\"));};})</script>"
],
"text/vnd.plotly.v1+html": [
"<div id=\"7468ef79-a292-442d-91ed-bac9747e7e88\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";\n",
"if (document.getElementById(\"7468ef79-a292-442d-91ed-bac9747e7e88\")) {\n",
" Plotly.newPlot(\"7468ef79-a292-442d-91ed-bac9747e7e88\", [{\"x\": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \"y\": [0.275, 0.245, 0.285, 0.25, 0.305, 0.305, 0.24, 0.285, 0.295, 0.28], \"type\": \"bar\", \"uid\": \"e76f3685-086e-41df-8b94-9694b65bb16f\"}], {\"barmode\": \"relative\", \"title\": {\"text\": \"Relative H\\u00e4ufigkeiten f\\u00fcr 10 Versuchsreihen / 200 Experimente pro Versuchsreihe\"}, \"xaxis\": {\"title\": {\"text\": \"Versuchsreihe\"}}, \"yaxis\": {\"title\": {\"text\": \"Relative H\\u00e4ufigkeit\"}}}, {\"showLink\": false, \"linkText\": \"Export to plot.ly\", \"plotlyServerURL\": \"https://plot.ly\"}); \n",
"}\n",
"});</script><script type=\"text/javascript\">window.addEventListener(\"resize\", function(){if (document.getElementById(\"7468ef79-a292-442d-91ed-bac9747e7e88\")) {window._Plotly.Plots.resize(document.getElementById(\"7468ef79-a292-442d-91ed-bac9747e7e88\"));};})</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from ipywidgets import interact, widgets\n",
"\n",
"def plot_bar_chart_versuche(N):\n",
" '''Callback handler des Schiebereglers'''\n",
" hs = [relative_häufigkeit_gewinn_spieler_a(N) for _ in range(10)] \n",
" bar = fig.data[0]\n",
" bar.y = hs\n",
" fig.layout['title'] = 'Relative Häufigkeiten für 10 Versuchsreihen / %d Experimente pro Versuchsreihe' % N\n",
" pl.iplot(fig)\n",
"\n",
"fig = go.FigureWidget(data, layout)\n",
"interact(plot_bar_chart_versuche, N=widgets.IntSlider(min=0,max=500,step=10,value=200))\n",
"pl.iplot(fig)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Im folgenden wollen wir noch die exakte Wahrscheinlichkeit für einen Sieg von A herleiten. Sei $\\Omega = \\{(W,W),(W, B), (W, G), (B, W), (B, B), (B, G), (G, W), (G, B), (G, G)\\}$ der Wahrscheinlichkeitsgrundraum des Spieles, mit lauter paarweise disjunkten Ergebnissen. Sei $\\mathbb{P}(A\\;gewinnt)$ die Wahrscheinlichkeit, dass Spieler A ein Spiel gewinnt. $\\mathbb{P}(A\\;gewinnt) = \\mathbb{P}(\\{(W,W)\\} \\cup \\{(B,B)\\} \\cup \\{(G,G)\\}) = \\mathbb{P}(\\{(W,W)\\} + \\mathbb{P}(\\{(B,B)\\}+\\mathbb{P}(\\{(G,G)\\}$. Für die Wahrscheinlichkeiten der uns interessierenden Elementarereignisse gilt: $\\mathbb{P}(W,W)=\\frac{4}{9} \\cdot \\frac{3}{8}=\\frac{1}{6}$, $\\mathbb{P}(B,B)=\\frac{3}{9} \\cdot \\frac{2}{8} = \\frac{1}{12}$, $\\mathbb{P}(G,G)=\\frac{2}{9} \\cdot \\frac{1}{8} = \\frac{1}{36}$. Somit folgt für deren Summe $$\\mathbb{P}(A\\;gewinnt) = \\frac{10}{36} = \\underline{\\underline{\\frac{5}{18}}} \\approx 0.278$$"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment