Du liest:
Das Python random Modul (mit Codebeispielen)

Das Python random Modul (mit Codebeispielen)

von Patrick
30.05.2020
Jetzt Python programmieren lernen

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.

1. Zufallszahlen mit random generieren

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

2. Mit Python random und Listen arbeiten

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]

3. Fazit

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.

Das könnte dich auch interessieren