Python :: Aufgabe #66
4 Lösungen

Verteilung beim Würfeln mit zwei Würfeln
Anfänger - Python
von Alucard1766
- 11.02.2015 um 13:59 Uhr
Angenommen du wirfst sehr viel mal mit zwei Würfeln. Wie sieht die Verteilung der Summe der geworfenen Würfelzahlen aus?
Vorgaben:
Simuliere möglichst zufällig sehr viele Würfe mit zwei Standardwürfel(=1-6).
Mindestens 100'000 Würfe, je mehr desto besser. -> Performanter Code
Gib aus, wie die Verteilung der Summe der beiden Würfeln prozentual/im Verhältnis aussehen
Du musst in der Lösung auf dieser Seite eine gut sicht- und interpretierbare Darstellung der Verteilung haben, damit wir die Ergebnisse vergleichen können
Beispiel:
Vorgaben:
Simuliere möglichst zufällig sehr viele Würfe mit zwei Standardwürfel(=1-6).
Mindestens 100'000 Würfe, je mehr desto besser. -> Performanter Code
Gib aus, wie die Verteilung der Summe der beiden Würfeln prozentual/im Verhältnis aussehen
Du musst in der Lösung auf dieser Seite eine gut sicht- und interpretierbare Darstellung der Verteilung haben, damit wir die Ergebnisse vergleichen können
Beispiel:
Konsolenausgabe:
1. Wurf: 1 und 5 - Summe 6
2. Wurf: 4 und 2 - Summe 6
...
100000. Wurf: 3 und 1 - Summe 4
Ergebnis:
1 - 5%
2 - 7%
12 - 6%
Lösungen:

import random, matplotlib.pyplot as plt n= int(raw_input("Wie oft soll gewuerfelt werden?:")) """--------------Erzeugen eines Dictionaries----------------""" d={} for i in range(2,13,1): d[i]=0 """--------------Methoden------------------------------------""" def wuerfeln(): #Simuliert den Würfelvorgang mit zwei Würfel w1=random.randrange(1,7,1) w2=random.randrange(1,7,1) az=w1+w2 return az #Rückgabe der zufälligen Augenzahl def speicher(az,d): #Speichern des gewürfelten Wertes in einem Dictionary d[az]=d[az]+1 return d #Rückgabe des aktualisierten Dictionaries def prozent(d): n=sum(d.values()) #bestimme wie oft gewürfelt wurde dp={} #erzeuzge ein neues dictionary in welchem die Prozentwerte gespeichert werden for i in range(2,13,1): dp[i]=round(d[i]/float(n)*100,2) #runde das Produkt aus z/n*100% auf die zweite Nachkomastelle return dp #Rückgabe des Dictionaries mit den Prozentwerten def graph(d): x=range(2,13,1) y=list(d.values()) plt.xlabel('Augenzahl') plt.ylabel('Anteil in %') plt.bar(x,y) plt.show() """-----------Methodenaufruf/Ausgabe----------------------------""" while n!=0: az = wuerfeln() d = speicher(az,d) n=n-1 print d dp=prozent(d) print dp """----------Graphische Ausgabe---------------------------------""" graph(dp)

import random random.seed() liste_erg = [0,0,0,0,0,0,0,0,0,0,0,0] z = input("Anzahl Wuerfe: ") anzahl = int(z) print() for i in range(anzahl): w1 = random.randint(1,6) w2 = random.randint(1,6) summe = w1 + w2 liste_erg[summe-1] += 1 #ohne Ausgabe viel performanter (also auskommentieren) print(str(i+1) + ". Wurf: " + str(w1) + " und " + str(w2) + " - Summe " + str(summe)) print() print("Ergebnis:") for i in range(1,13): print("{0:2} - {1:2.0f}%".format(i, round(100*liste_erg[i-1]/anzahl,2)))

# -*- coding: utf-8 -*- from random import randint eingabe = input("Wie oft soll gewuerfelt werden? ") x = 1 summen = {2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0} while x <= eingabe: w1 = randint(1, 6) w2 = randint(1, 6) summe = w1 + w2 summen[summe] = summen[summe] + 1 print str(x) + ". Wurf: " + str(w1) + " und " + str(w2) + " - " + str(summe) x = x + 1 print "\nProzentuale Verteilung der gewuerfelten Summen:\n" for i in range(2, 13): prozent = summen[i] * 100 / eingabe print "Summe " + str(i) + ":\t" + str(prozent) + "%"

import random wiederholungen = 1000000 erg=[0,0,0,0,0,0,0,0,0,0,0,0] for i in range(1,wiederholungen): erg[random.choice(range(1,7))+random.choice(range(1,7))-1]+=1 erg.pop(0) for j in range(0,len(erg)): print(str(j+2)+": "+str((erg[j]/wiederholungen)*100)+"%")