Python :: Aufgabe #66 :: Lösung #1

4 Lösungen Lösungen öffentlich
#66

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:

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%
#1
vote_ok
von frfrey (370 Punkte) - 16.03.2015 um 23:11 Uhr
Quellcode ausblenden Python-Code
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)

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben