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 brandom.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 nsecrets.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!