Das Python random Modul (mit Codebeispielen)

    Avatarbild von Patrick
    Patrick

    veröffentlicht am: 30.05.2020
    zuletzt aktualisiert am: 02.02.2023

    Python random: So klappt es richtig!

    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.

    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

    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]

    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.

    😩 Gelangweilt von den Udemy & YouTube-Tutorials?!

    Lerne spielerisch Python und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.

    TP Star TP Star TP Star TP Star TP Star

    "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

    👋 Wir warten bereits auf dich!

    Lerne das, was du wirklich brauchst.

    Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.

    Logo von Python
    Logo von PyTorch
    Logo von Pandas
    Logo von Matplotlib
    Logo von Java
    Logo von NumPy
    Mehr erfahren

    100% kostenlos registrieren · keine Zahlungsdaten notwendig