Python:
Generering av tilfeldige tall
Hvordan:
Python tilbyr random
-modulen som hjelper i generering av tilfeldige tall for ulike bruksområder. Her er hvordan du kommer i gang:
Importere modulen
import random
Generere et tilfeldig heltall Mellom to hvilke som helst tall.
random_integer = random.randint(1, 10) print(random_integer)
Eksempel på utdata:
7
Generere et flyttall Mellom 0 og 1.
random_float = random.random() print(random_float)
Eksempel på utdata:
0.436432634653
Hvis du trenger et flyttall i et annet spenn, multipliser:
random_float_range = random.random() * 5 # 0 til 5 print(random_float_range)
Eksempel på utdata:
3.182093745
Velge et tilfeldig element fra en liste
greetings = ['Hello', 'Hi', 'Hey', 'Hola', 'Bonjour'] print(random.choice(greetings))
Eksempel på utdata:
Hola
Stokke en liste Perfekt for kortspill eller enhver applikasjon som trenger å randomisere rekkefølgen.
numbers = list(range(10)) random.shuffle(numbers) print(numbers)
Eksempel på utdata:
[2, 5, 0, 4, 9, 8, 1, 7, 6, 3]
Fordypning
Random
-modulen i Python bruker en pseudotilfeldig tallgenerator (PRNG), spesifikt Mersenne Twister-algoritmen, som er god for generelle applikasjoner, men ikke egnet for kryptografiske formål på grunn av forutsigbarheten hvis nok utdata observeres. Secrets
-modulen, introdusert i Python 3.6, tilbyr et bedre alternativ for generering av kryptografisk sterke tilfeldige tall, spesielt nyttig i sikkerhetssensitive applikasjoner. For eksempel, generering av en sikker, tilfeldig token for en tilbakestilling av passordlenke:
import secrets
token = secrets.token_hex(16)
print(token)
Historisk har generering av tilfeldige tall som virkelig er tilfeldige, vært en utfordring i databehandling, med tidlige metoder som stoler på fysiske fenomener eller manuelt inntastede frø. Utviklingen og adopsjonen av algoritmer som Mersenne Twister (brukt som standard i Pythons random
-modul til minst min siste kunnskapsoppdatering i 2023) markerte betydelig fremgang. Imidlertid har den pågående søken etter mer sikre og effektive algoritmer ført til inkluderingen av secrets
-modulen for kryptografirelaterte oppgaver. Denne utviklingen reflekterer den voksende betydningen av sikkerhet i programvareutvikling og behovet for mer robust tilfeldighet i applikasjoner som spenner fra kryptering til generering av sikre token.