Hvordan tilfældige tal generatorer arbejde

Ikke alle tilfældigheder er lige. Forskellen mellem en pseudo-tilfældigt tal generator og en kryptografisk sikker en afgør, om din mønt flip, terninger roll, eller navn draw er virkelig fair - eller stille forudsigelig.


Hvad er en Random Number Generator?

En tilfældig talgenerator (RNG) er en algoritme eller hardware-enhed, der producerer en sekvens af tal uden nogen mærkbar mønster. Computere står over for et grundlæggende problem her: De er deterministiske maskiner. Med samme starttilstand vil en CPU altid producere samme output. True hardware tilfældighed kræver en ekstern kilde til uforudsigelighed - kaldet entropi - såsom termisk støj, disk timing variation, eller mus bevægelse.

Software RNGs løse dette ved enten at indsamle ægte entropi fra operativsystemet eller ved hjælp af en matematisk formel til at simulere tilfældighed. Disse to fremgangsmåder giver meget forskellige resultater.

Pseudo- Random Number Generators (PRNG)

En pseudo-tilfældigt tal generator (PRNG) starter fra intern tilstand og anvender en deterministisk algoritme til at producere hvert efterfølgende tal. Output kan se tilfældigt, men den samme oprindelige tilstand producerer den samme sekvens.

JavaScript 's Math.random () bruger en implementerings- defineret PRNG. JavaScript specifikationen kræver ikke en bestemt algoritme og gør eksplicit ikke output kryptografisk sikre. Det er derfor upassende, når det drejer sig om uforudsigelighed eller prisværdig retfærdighed.

Til de fleste formål - animationer, blander en spilleliste, vælger en tilfældig baggrundsfarve - dette betyder ikke noget. Men for alt, hvor retfærdighed er på spil (giveaways, team trækker, spil resultater), forudsigelighed er et reelt problem.

Kryptografisk sikre PRNGs (CSPRNG)

En kryptografisk sikker pseudovilkårlig talgenerator (CSPRNG) er designet således, at tidligere udgange ikke gør fremtidige udgange praktisk forudsigelige. Sammenlignet med en generel-formål PRNG, det giver egenskaber, der kræves af security- følsomme og fairness- følsomme applikationer:

  • Next- bit uforudsigelighed: Kendskab til et antal tidligere udgange giver ingen statistisk signifikant fordel i at forudsige den næste uddata.
  • Stærk platformentropi: Generatoren er sået og genopfrisket af operativsystemet snarere end anvendelse tidsstempler eller andre let gættede værdier.

Browsere få kryptografisk stærke værdier fra operating- system faciliteter. De nøjagtige entropi kilder og algoritmer er platform detaljer, så web-programmer bør bruge Web Crypto API i stedet for at forsøge at indsamle eller administrere entropi selv.

Web Crypto API: crypto.getRandomValues ()

Browsere afsløre CSPRNG funktionalitet gennem Web Crypto API. Nøglefunktionen er crypto.getRandomValues (typedArray), som udfylder et indtastet array med kryptografisk tilfældige bytes fra OS entropi puljen.

For at generere en upartisk heltal i et område, Randly læser en 32- bit værdi (eller kombinerer værdier for bredere safe- heltal intervaller) og afviser den korte hale, der ellers ville skabe modulo bias:

()

const array = new Uint32Array (1)

crypto.getRandomValues (array)

retursystem [0]

}

(min, max) {

const range = max - min + 1

const limit = Math.floor (2 * * 32 / range) * range;

Lad værdi;

do- værdi = random Uint32 (); mens (værdi > = grænse);

returmin + (værdi% interval)

}

A Uint32Array giver 2 ³ ² mulige værdier; Randly kombinerer 53 bits, når der er brug for et bredere sikkerhedsheltal. Prøveudtagning sikrer, at hver output i det ønskede område svarer til det samme antal kildeværdier, så intet resultat får en større andel, blot fordi det ønskede interval ikke deler kildeområdet jævnt.

Hvorfor det betyder noget for fairness

For de fleste afslappet brug, forskellen er usynlig. Men overveje en klasselærer ved hjælp af et navn vælger at tilkalde studerende, eller en organisation kører en præmie lodtrækning. Et generelt formål PRNG er ikke specificeret til kontradiktorisk brug, mens en platform CSPRNG er designet til at holde fremtidige værdier uforudsigelige. En revideret proces er stadig hensigtsmæssig for regulerede eller højværditræk.

Math.random () (PRNG)

  • • Deterministisk i betragtning af frøet
  • • Ingen kryptografisk uforudsigelighed garanti
  • • Hurtig - velegnet til animationer og visuals
  • • Ikke egnet til sikkerhed eller fair trækker

crypto.getRandomValues () (CSPRNG)

  • • Leveres af operationssystemet CSPRNG
  • • Designet til at modstå output forudsigelse
  • • Lidt langsommere (ubetydelig for brug af værktøj)
  • • Passende primitiv for sikker tilfældighed

Sådan bruger Randly tilfældighed

Hvert værktøj på Randly - terninger ruller, mønt flips, navn picks, hjul spins, farve generation - bruger crypto.getRandomValues () udelukkende. Gennemførelsen lever i et enkelt delt modul (lib / rando.ts) at eksport indtastet funktioner: random Int (min, max), randomiindeks (længde), randomElement (array), og shuffleArray (array).

Ingen opfordring til Math.random () findes i ethvert værktøj logik. Det eneste sted standard PRNG værdier vises er i Framer Motion animation parametre (flydende element udgangspositioner), som er rent kosmetisk og har ingen effekt på værktøjet resultater.

Almindelige misforståelser

"At klikke hurtigere gør resultatet mere tilfældigt".

Timing dit klik har ingen effekt, når du bruger en CSPRNG. Entropi puljen opdateres løbende af OS uanset brugerinteraktion.

"At køre det samme værktøj to gange i træk giver korrelerede resultater".

Hvert opkald til crypto.getRandomValues () er uafhængig. Tidligere udgange giver ingen oplysninger om fremtidige.

"En længere liste betyder, at nogen til sidst er mindre tilbøjelige til at blive valgt".

Tilfældigt indeks valg giver hver position en lige 1 / n sandsynlighed, uanset listens længde.


Prøv værktøjerne

Alle Randly værktøjer bruger kryptografisk sikker tilfældighed. Ingen tegn påkrævet.

→ Tilfældig navnevælger→ Dice Roller (d2- d100)→ Coin Flip→ Hjulspinder

Randly

Små værktøjer til nemmere beslutninger.

Alle værktøjerKøreplanPrivatlivVilkårKontaktLærHjælp

© 2026 Randly. Alle rettigheder forbeholdes.