Python:
Willekeurige getallen genereren
Hoe te:
Python biedt de random
module die helpt bij het genereren van willekeurige getallen voor verschillende doeleinden. Hier is hoe je kunt beginnen:
Het importeren van de module
import random
Een willekeurig geheel getal genereren Tussen twee getallen.
random_integer = random.randint(1, 10) print(random_integer)
Voorbeelduitvoer:
7
Een willekeurige zwevende-kommagetel genereren Tussen 0 en 1.
random_float = random.random() print(random_float)
Voorbeelduitvoer:
0.436432634653
Als je een zwevende-kommagetel in een ander bereik nodig hebt, vermenigvuldig dan:
random_float_range = random.random() * 5 # 0 tot 5 print(random_float_range)
Voorbeelduitvoer:
3.182093745
Een willekeurig element uit een lijst kiezen
greetings = ['Hallo', 'Hoi', 'Hey', 'Hola', 'Bonjour'] print(random.choice(greetings))
Voorbeelduitvoer:
Hola
Een lijst schudden Perfect voor kaartspellen of elke toepassing die behoefte heeft aan willekeurige volgorde.
numbers = list(range(10)) random.shuffle(numbers) print(numbers)
Voorbeelduitvoer:
[2, 5, 0, 4, 9, 8, 1, 7, 6, 3]
Diepere duik
De random
module in Python gebruikt een pseudowillekeurige nummergenerator (PRNG), specifiek het Mersenne Twister-algoritme, dat goed is voor algemene toepassingen maar niet geschikt voor cryptografische doeleinden vanwege de voorspelbaarheid als voldoende uitvoer is waargenomen. De secrets
module, geïntroduceerd in Python 3.6, biedt een beter alternatief voor het genereren van cryptografisch sterke willekeurige getallen, met name nuttig in beveiligingsgevoelige toepassingen. Bijvoorbeeld, het genereren van een veilige, willekeurige token voor een wachtwoordresetlink:
import secrets
token = secrets.token_hex(16)
print(token)
Historisch gezien was het genereren van werkelijk willekeurige getallen een uitdaging in de informatica, met vroege methoden die afhankelijk waren van fysieke fenomenen of handmatig ingevoerde zaden. De ontwikkeling en adoptie van algoritmen zoals Mersenne Twister (standaard gebruikt in Python’s random
module tot ten minste mijn laatste kennisupdate in 2023) markeerde een significante vooruitgang. Echter, de voortdurende zoektocht naar meer veilige en efficiënte algoritmen heeft geleid tot de opname van de secrets
module voor cryptografiegerelateerde taken. Deze evolutie weerspiegelt het groeiende belang van beveiliging in softwareontwikkeling en de behoefte aan robuustere willekeurigheid in toepassingen variërend van encryptie tot het genereren van veilige tokens.