von: Konstantin
aktualisiert: Feb. 26, 2025
Zufallszahlen sind in der Programmierung extrem nützlich. Egal, ob du ein Spiel entwickelst, Daten simulieren willst oder zufällige Items aus einer Liste ziehen musst – Python bietet dir viele Möglichkeiten. In diesem Artikel zeige ich dir, wie du Zufallszahlen in Python generierst und welche Methoden am besten geeignet sind.
Die einfachste Methode ist random.randint()
, um eine ganzzahlige Zufallszahl innerhalb eines Bereichs zu erzeugen:
import random
zufallszahl = random.randint(1, 100)
# Zahl zwischen 1 und 100:
print(zufallszahl)
Anwendungsfälle:
Wenn du eine Kommazahl (Float) zwischen 0 und 1 brauchst, dann nutze random.random()
:
import random
zufallszahl = random.random()
# Zahl zwischen 0.0 und 1.0:
print(zufallszahl)
Anwendungsfälle:
Möchtest du ein zufälliges Element aus einer Liste auswählen? Dann hilft dir random.choice()
:
import random
farben = ["Rot", "Blau", "Grün", "Gelb"]
zufallsfarbe = random.choice(farben)
print(zufallsfarbe)
Anwendungsfälle:
Falls du mehrere verschiedene Zahlen ohne Wiederholung brauchst, nutze random.sample()
:
import random
zahlen = random.sample(range(1, 100), 5)
# 5 verschiedene Zahlen zwischen 1 und 99:
print(zahlen)
Anwendungsfälle:
Für Statistiken oder Simulationen sind normalverteilte Zufallszahlen wichtig. Das geht mit random.gauss()
:
import random
# Mittelwert 50, Standardabweichung 10:
zufallszahl = random.gauss(mu=50, sigma=10)
print(zufallszahl)
Anwendungsfälle:
Damit deine Zufallszahlen immer gleich bleiben (z. B. für Tests), kannst du einen Seed setzen:
import random
random.seed(42)
# immer dieselbe Zahl:
print(random.randint(1, 100))
Warum ist das wichtig?
Wenn du mit großen Datenmengen arbeitest, ist numpy.random
oft schneller als random
:
import numpy as np
zahlen = np.random.randint(1, 100, 10)
# 10 Zufallszahlen zwischen 1 und 99:
print(zahlen)
Den Unterschied kannst du mit dem Python Modul timeit
messen. Die nötigen imports übergibst du als Parameter setup
an timeit
, das eigentliche Code-Snippet wird mit stmt
übergeben und mit dem Parameter number
bestimmst du die Anzahl an Durchläufen.
import timeit
zeitmessung_np_import = "import numpy as np"
zeitmessung_np = "np.random.randint(1, 10000, 1000)"
print(timeit.timeit(setup=zeitmessung_np_import,
stmt=zeitmessung_np,
number=1000))
# Ausgabe: 0.04300412500015227
zeitmessung_rand_import = "import random"
zeitmessung_rand = "random.sample(range(1, 10000), 1000)"
print(timeit.timeit(setup=zeitmessung_rand_import,
stmt=zeitmessung_rand,
number=1000))
# Ausgabe: 0.4253459169999587
Im Beispiel habe ich jeweils 1000 zufällige Zahlen zwischen 1 und 10000 gezogen und das 1000 mal wiederholt. Das Ergebnis überzeugt: numpy.random
ist 10 mal schneller als random
!
Warum ist NumPy schneller?
Anwendungsfälle für NumPy-Zufallszahlen:
Python bietet eine Vielzahl an Funktionen, um Zufallszahlen zu generieren – von einfachen Zufallswerten bis zu kryptografisch sicheren Zufallszahlen. Hier noch mal die wichtigsten Punkte:
random.randint(a, b)
: Ganze Zufallszahl zwischen a
und b
random.random()
: Zufallszahl zwischen 0 und 1random.choice(liste)
: Zufälliges Element aus einer Listerandom.sample(liste, n)
: Mehrere zufällige Elemente ohne Wiederholungrandom.gauss(mu, sigma)
: Normalverteilte Zufallszahlrandom.seed(n)
: Reproduzierbare Zufallszahlensecrets.randbelow(n)
: Sichere Zufallszahl unter n
secrets.choice(zeichen)
: Sicherer, zufälliger Zeichenstringnumpy.random.randint(a, b, size=n)
: Schnelle Zufallszahlen für große ArraysMit diesen Methoden bist du bestens ausgerüstet, um Zufallszahlen effizient zu nutzen!