random – das Zufallsmodul

In diesem Beitrag möchte ich die Verwendung des Zufallsmoduls in Python beschreiben. random heisst übersetzt Zufall. Das Zufallsmodul bietet Zugriff auf Funktionen, die viele Operationen unterstützen. Das Wichtigste ist vielleicht, dass Sie Zufallszahlen generieren können.

Wann kann man es benutzen?

Falls wir möchten, dass der Computer eine Zufallszahl in einem bestimmten Bereich auswählt

Wie zufällig ist zufällig? Dies ist eine seltsame Frage, die jedoch in Fällen, in denen Informationssicherheit betroffen ist, von größter Bedeutung ist. Wenn Sie in Python zufällige Daten, Strings oder Zahlen generieren, ist es ratsam, zumindest eine ungefähre Vorstellung davon zu haben, wie diese Daten generiert wurden.

In diesem Abschnitt werden Sie einige Optionen für das Generieren von Zufallsdaten in Python behandeln und dann einen Vergleich von jedem hinsichtlich Sicherheitsniveau, Vielseitigkeit, Zweck und Geschwindigkeit aufbauen.

Zunächst ist ein deutlicher Haftungsausschluss erforderlich. Die meisten mit Python erzeugten Zufallsdaten sind im wissenschaftlichen Sinne des Wortes nicht völlig zufällig. Es ist vielmehr ein Pseudozufall: Er wird mit einem Pseudozufallszahlengenerator (PRNG) erzeugt, der im Wesentlichen ein beliebiger Algorithmus zum Erzeugen von scheinbar zufälligen, aber dennoch reproduzierbaren Daten ist.

„Echte“ Zufallszahlen können von einem echten Zufallszahlengenerator (TRNG) generiert werden. Ein Beispiel ist, einen Würfel wiederholt vom Boden zu nehmen, ihn in die Luft zu werfen und ihn wie möglich landen zu lassen.

Angenommen, Ihr Wurf ist unvoreingenommen, haben Sie wirklich keine Ahnung, auf welcher Zahl der Würfel landen wird. Das Würfeln ist eine einfache Form der Verwendung von Hardware, um eine Zahl zu generieren, die überhaupt nicht deterministisch ist. (Oder Sie können die Würfel-O-Matic für Sie erledigen lassen.) TRNGs sind nicht in diesem Artikel enthalten, aber zum Vergleich dennoch eine Erwähnung wert.

PRNGs, die normalerweise mit Software und nicht mit Hardware ausgeführt werden, arbeiten etwas anders. Hier ist eine kurze Beschreibung:

Sie beginnen mit einer Zufallszahl, der als Seed bekannt ist, und verwenden dann einen Algorithmus, um daraus eine Pseudozufallsfolge von Bits zu generieren.

Es wird das random Modul importiert:

import random

Schauen wir uns einige grundlegende Funktionen von random an. Sie haben oben einen zufälligen Float generiert. Sie können eine zufällige Ganzzahl zwischen zwei Endpunkten in Python mit der Funktion random.randint () generieren. Dies erstreckt sich über das gesamte [x, y] -Intervall und kann beide Endpunkte umfassen:

>>>import random
>>>random.randint(0,10)
8
>>>random.randint(1,99)
1

Mit random.randrange () können Sie die rechte Seite des Intervalls ausschließen, dh die generierte Zahl liegt immer innerhalb von [x, y) und ist immer kleiner als der rechte Endpunkt:

>>> random.randrange(1, 10)

Wenn Sie Zufallsbewegungen generieren müssen, die in einem bestimmten [x, y] -Intervall liegen, können Sie random.uniform () verwenden, das sich aus der kontinuierlichen Gleichverteilung ergibt:

>>> random.uniform(200,300)
246.15019646135437

Um ein zufälliges Element aus einer nicht leeren Sequenz (wie eine Liste oder ein Tupel) auszuwählen, können Sie random.choice () verwenden. Es gibt auch random.choices () zur Auswahl mehrerer Elemente aus einer Sequenz mit Ersetzung (Duplikate sind möglich):

>>> eintraege = ["eins","zwei","drei","vier"]
>>> random.choices(eintraege)
['zwei']
>>> random.choices(eintraege, k=2)
['zwei', 'eins']

Um Sampling ohne Ersatz zu simulieren, verwenden Sie random.sample ():

>>> random.sample (eintraege, 4)
['drei', 'vier', 'zwei', 'eins']

Sie können eine Sequenz direkt mit random.shuffle () randomisieren. Dadurch wird das Sequenzobjekt geändert und die Reihenfolge der Elemente randomisiert:

>>> random.shuffle(eintraege)
>>> eintraege
['drei', 'eins', 'vier', 'zwei']

Ein Beispiel für eine einfache Anwendung eines random : Hier wird eine Zahl zwischen 1-10 gestellt und nach Eingabe wird die Zahl verglichen.

#/usr/bin/python3
import random
print ("Bitte die Zahl raten und eingeben")
eingabe=int(input())
zahl=random.randint(0,10)
if eingabe > zahl:
print ("Zu klein")
if eingabe < zahl:
print ("Zu groß")
if eingabe == zahl:
print ("Ja, Richtig")