Zufallszahlen
Für Spiele und Simulationen sind Zufallszahlen äusserst nützlich. Auch für kryptographische Anwendungen werden Zufallszahlen gebraucht. Dafür sind die Zufallszahlen von Python aber nicht geeignet. Und sowieso: Programmieren Sie nie selbst Krypto (es sei denn, Sie machen seit 10 Jahren nichts anderes, als Kryptographie und Computerinnereien zu studieren).
- zufall.py
import random print("Floats, uniform von 0.0 bis ohne 1.0") for i in range(10): print(random.random()) # Ich bevorzuge random.randrange weil es gleich wie range funktioniert print("Ints, uniform von 0 bis und mit 3") for i in range(10): print(random.randrange(4)) # Ich rate von random.randint ab und empfehle random.randrange print("Ints, uniform von 1 bis und mit 6") for i in range(10): print(random.randint(1,6))
random.randrange(a,b,s)
wählt ein zufälliges Element aus range(a,b,s)
aus.
Detaillierte Übersicht: https://machinelearningmastery.com/how-to-generate-random-numbers-in-python/
Aufgaben
- Generieren Sie 10 Zufallszahlen (floats) zwischen 10.0 (inklusive) und 20.0 (exklusive).
- Welchen Wert erhält man im Durchschnitt, wenn man mit zwei Würfeln auf einmal würfelt und sich jeweils den grösseren der beiden Werte notiert?
- Challenge: Können Sie den Wert exakt berechnen? Wie sieht es mit $3$ und mehr Würfeln aus? Wie mit $n$?
- Generieren Sie $n=10000$ mal einen zufälligen Punkt im Einheitsquadrat $[0,1] \times [0,1]$. Wie viele davon liegen im Einheitskreis (d.h. im Kreis mit Radius 1 um den Ursprung)? Wie viele müssten es sein? Berechnen Sie daraus eine Schätzung für $\pi$.