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 randomEen willekeurig geheel getal genereren Tussen twee getallen.
random_integer = random.randint(1, 10) print(random_integer)Voorbeelduitvoer:
7Een willekeurige zwevende-kommagetel genereren Tussen 0 en 1.
random_float = random.random() print(random_float)Voorbeelduitvoer:
0.436432634653Als 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.182093745Een willekeurig element uit een lijst kiezen
greetings = ['Hallo', 'Hoi', 'Hey', 'Hola', 'Bonjour'] print(random.choice(greetings))Voorbeelduitvoer:
HolaEen 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.