Python:
Generierung von Zufallszahlen
Wie:
Python bietet das random-Modul, das beim Generieren von Zufallszahlen für verschiedene Verwendungen hilft. So fängst du an:
Importieren des Moduls
import randomGenerieren einer zufälligen Ganzzahl Zwischen zwei beliebigen Zahlen.
random_integer = random.randint(1, 10) print(random_integer)Beispiel-Ausgabe:
7Generieren einer Fließkommazahl Zwischen 0 und 1.
random_float = random.random() print(random_float)Beispiel-Ausgabe:
0.436432634653Wenn du eine Fließkommazahl in einem anderen Bereich benötigst, multipliziere:
random_float_range = random.random() * 5 # 0 bis 5 print(random_float_range)Beispiel-Ausgabe:
3.182093745Auswählen eines zufälligen Elements aus einer Liste
greetings = ['Hallo', 'Hi', 'Hey', 'Hola', 'Bonjour'] print(random.choice(greetings))Beispiel-Ausgabe:
HolaMischen einer Liste Perfekt für Kartenspiele oder jede Anwendung, die eine zufällige Reihenfolge benötigt.
numbers = list(range(10)) random.shuffle(numbers) print(numbers)Beispiel-Ausgabe:
[2, 5, 0, 4, 9, 8, 1, 7, 6, 3]
Vertiefung
Das random-Modul in Python verwendet einen Pseudozufallszahlengenerator (PRNG), speziell den Mersenne-Twister-Algorithmus, der gut für allgemeine Anwendungen geeignet ist, aber aufgrund seiner Vorhersehbarkeit, wenn genügend Ausgaben beobachtet werden, nicht für kryptografische Zwecke geeignet ist. Das secrets-Modul, eingeführt in Python 3.6, bietet eine bessere Alternative für die Generierung kryptografisch starker Zufallszahlen, besonders nützlich bei sicherheitssensiblen Anwendungen. Zum Beispiel das Generieren eines sicheren, zufälligen Tokens für einen Passwort-Reset-Link:
import secrets
token = secrets.token_hex(16)
print(token)Historisch gesehen war das Generieren von wirklich zufälligen Zahlen in der Informatik eine Herausforderung, wobei frühe Methoden auf physischen Phänomenen oder manuell eingegebenen Seeds beruhten. Die Entwicklung und Einführung von Algorithmen wie Mersenne Twister (standardmäßig im random-Modul von Python verwendet, zumindest bis zu meinem letzten Wissensstand im Jahr 2023) markierten bedeutende Fortschritte. Die fortlaufende Suche nach sichereren und effizienteren Algorithmen hat jedoch zur Aufnahme des secrets-Moduls für kryptografiebezogene Aufgaben geführt. Diese Evolution spiegelt die wachsende Bedeutung der Sicherheit in der Softwareentwicklung und den Bedarf an robusterem Zufall in Anwendungen von der Verschlüsselung bis zur sicheren Token-Generierung wider.