veröffentlicht am: 30.05.2020 zuletzt aktualisiert am: 02.02.2023
Manchmal ist es praktisch, eine zufällige Zahl oder ein zufälliges Element einer Liste auszuwählen. Zu diesem Zweck steht uns das Python random Modul zur Verfügung. Mehr über die meist genutzten Funktionen des Moduls erfährst du im Folgenden.
Das Modul random stellt dir mehrere Möglichkeiten zur Verfügung, um zufällige Zahlen zu generieren. Eine davon ist die Funktion random. Diese liefert dir eine Gleitkommazahl zwischen 0.0 und 1.0.
from random import random print(random(), random(), random()) # 0.5697811657363051 0.9869019997793532 0.6482508386889044
Allerdings handelt es sich hierbei um einen Pseudo-Zufallszahlengenerator. Die generierten Zahlen basieren auf einem sogenannten seed. Wenn du random mit dem gleichen seed nutzt, wird auch das Ergebnis immer gleich sein.
from random import seed, random seed(1) print(random(), random(), random()) # 0.13436424411240122 0.8474337369372327 0.763774618976614 seed(1) print(random(), random(), random()) # 0.13436424411240122 0.8474337369372327 0.763774618976614
Du kannst, statt Funktionen von random zu importieren, auch random selbst importieren und dann die Funktionen des Moduls mit einem Punkt aufrufen. Mit der Funktion randint kannst du eine ganzzahlige Zufallszahl generieren. Dabei kannst du den Mindest- sowie den Höchstwert angeben.
import random print(random.randint(0, 42)) # 16
Bei randint handelt es sich genau genommen nur um einen Alias für einen Aufruf von randrange mit Mindestwert und Höchstwert + 1. + 1 für den Höchstwert kommt daher, dass randrange den obersten Wert normalerweise nicht beinhaltet. Zudem unterstützt randrange noch einen dritten Parameter, die Schrittgröße.
seed(50) print(random.randrange(2, 5, 2)) # 4 print(random.randrange(4, 8, 3)) # 7
Der Effekt dieses Parameters wird noch anschaulicher, bei einem Wert von 10 für Schrittgröße:
for i in range(0, 5): print(random.randrange(3, 1024, 10))
463 813 313 883 603
Mit choice kannst du ein zufälliges Element aus einer Liste auswählen.
liste = [0, 13, 42, 1024] print(random.choice(liste)) # 42
Du kannst mit choices aus einer Liste eine neue Liste generieren lassen. Mit dem Parameter k kannst du angeben, wie viele Elemente die zurückgegebene Liste haben soll.
liste = [0, 13, 42, 1024] print(random.choices(liste, k=3)) # [13, 42, 0]
Der Parameter weights lässt dich die relative Wahrscheinlichkeit, mit der jeder Wert zurückgegeben wird, festlegen.
seed(15) liste = [0, 13, 42, 1024] print(random.choices(liste, weights=[0, 1, 5, 1], k=10)) # [1024, 13, 42, 42, 1024, 13, 1024, 42, 1024, 1024]
Mit cum_weights kannst du die Gewichtung kumuliert angeben. Das heißt, dass du [0, 1, 5, 1] auch als [0, 1, 6, 7] angeben kannst.
seed(15) print(random.choices(liste, cum_weights=[0, 1, 6, 7], k=10)) # [1024, 13, 42, 42, 1024, 13, 1024, 42, 1024, 1024]
shuffle lässt dich Sequenzen wie Listen zufällig anordnen.
liste = [0, 13, 42, 1024] random.shuffle(liste) print(liste) # [13, 0, 1024, 42]
Zufallszahlen generieren in Python ist mit dem Modul random recht einfach. Auch Listen zufällig mischen oder ein zufälliges Element aus einer Liste auszuwählen sind einfache Anforderungen. Nur, wenn du sicherheitsrelevanten Code schreibst, solltest du vorsichtig sein, da es sich bei random nur um einen Pseudo-Zufallszahlengenerator handelt. Außerdem sind die hier aufgeführten Funktionen nur ein teil, es gibt nämlich noch einige weitere für reellwertige Ausschüttungen.
Wenn du Fragen, Kritik, Lob oder Anmerkungen hast, teile es mir doch bitte in den Kommentaren mit.
😩 Gelangweilt von den Udemy & YouTube-Tutorials?!
Lerne spielerisch Python und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.
"Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."
- Lennart Sparbier
100% kostenlos registrieren · keine Kreditkarte notwendig
Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.
100% kostenlos registrieren · keine Zahlungsdaten notwendig