{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Programmieraufgabe 3 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wichtig: Damit alle benötigten Pakete richtig eingebunden werden, führen Sie die nächste Zelle einmal aus." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import numpy as np # makes numpy routines and data types available as np.[name ouf routine or data type]\n", "import matplotlib.pyplot as plt # makes plotting command available as plt.[name of command]\n", "from numpy import random\n", "from numpy import linalg\n", "\n", "random.seed(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## a) Würfelspiel Seven-Eleven\n", "Simulieren Sie das Casino-Würfelspiel Seven-Eleven (Craps).
\n", "Dabei wird mit zwei Würfeln solange geworfen, bis entweder die\n", "Bank oder der Spieler gewonnen hat. Es sei $Y_k$ die Zufallsgrösse für die Augensumme im\n", "$k$-ten Wurf. Der Spieler gewinnt, falls $Y_1 \\in \\{7, 11\\}$ oder $Y_k = Y_1$ für $k \\geq 2$. \n", "Die Bank gewinnt, falls $Y_1 \\in \\{2, 3, 12\\}$ oder $Y_k = 7$ für $k \\geq 2$.\n", "\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# \"initial\" ist die Augensumme im ersten Wurf...\n", "# spiel() ist eine Funktion, die die Spielphase nach dem ersten Wurf, simuliert. \n", "# spiel() soll ein Tupel zurueckgeben, das als erste Komponente \"gewonnen\" oder \"verloren\" enthaelt und \n", "# als zweite Komponente die Laenge des aktuellen Spiels\n", "\n", "def spiel(initial):\n", "#insert code here... \n", " return (win,steps)\n", " \n", " \n", "#Wie oft gewwinne ich \n", "count = 0.\n", "#Wie oft wird das Spiel durchgefuehrt\n", "samples = 10000\n", "#Spieldauer in jedem Spiel, mit 0 initialisiert\n", "length = np.zeros(samples)\n", "for i in range(samples):\n", " w = np.random.randint(1,7,2)\n", " s = np.sum(w)\n", " if s in [7,11]: ret = (1,1)\n", " #insert code here...\n", "\n", "\n", "#Ausgabe: \n", "\n", "#maximale Spiellaenge\n", "n = 30\n", "h = np.histogram(length,np.arange(0,n))\n", "print('Gewinnhaeufigkeit: %0.5f' % float(count/samples))\n", "print('Mittlere Laenge: %0.5f' % np.mean(length))\n", "#plt.plot(np.arange(0, 100 , 1),hist) \n", "plt.bar(np.arange(0,n-1), h[0], color=\"blue\");\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#Lege die Uebergangsmatrix an\n", "T = np.array([[],[],[],[],[],[])\n", "\n", "#Potenziere die Matrix \n", "Tk = T\n", "while (abs(Tk[0,1]-Talt)>0.0001):\n", " #insert code here \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## b) Irrsprung\n", "Simulieren Sie die zufällige Irrfahrt eines Springers auf einem $n \\times n$ Schachbrett. Alle möglichen Rösselsprünge von einem gegebenen Feld aus sind dabei gleichwahrscheinlich ($\\rightarrow$ aufpassen an den Ecken und Kanten!). Die Eingabeparameter sind: $n$ als Schachbrettgrösse, $steps$ als Anzahl der Sprünge und $samples$ als Anzahl der Versuche. Der Springer wird initial zufällig gleichverteilt auf eines der Felder gesetzt. Anschliessend springt der Springer $steps$ oft und landet auf einem Zielfeld. \n", "\n", "