Een willekeurig getal is een waarde die wordt geproduceerd door een onvoorspelbaar proces — afkomstig van iets fysieks zoals dobbelstenen of thermische ruis, of van een computer-algoritme dat willekeur nabootst. Het grote verschil tussen true random number generators (TRNG’s) en pseudorandom number generators (PRNG’s) bepaalt of je app écht veilig is of alleen maar willekeurig lijkt. Of je nu een snelle trekking nodig hebt voor een loterij of een cryptografisch veilige sleutel, het gebruik van een betrouwbare willekeurige-getallen-generator maakt het verschil. Deze gids behandelt de basis, de echte risico’s van fouten, en hoe je in 2026 de juiste generator kiest voor jouw situatie.
Wat is een willekeurig getal precies? (En waarom doet het ertoe?)
Een willekeurig getal wordt niet bepaald door de waarde zelf — het wordt bepaald door hoe onvoorspelbaar de bron is. Als je een dobbelsteen gooit, is de uitkomst willekeurig omdat het fysieke proces — de vallende dobbelsteen, het raken van het oppervlak, de luchtweerstand — te complex is om precies te modelleren. In de informatica wordt willekeurigheid gemeten met entropie, een begrip uit de informatietheorie dat onvoorspelbaarheid kwantificeert. Hoe meer entropie een bron heeft, hoe moeilijker het is om het volgende getal te raden.
Het alledaagse idee van willekeurigheid wijkt vaak af van het computationele idee. Een reeks als “1 2 3 4 5” lijkt voor een mens niet willekeurig, maar zoals het Wikipedia-artikel over willekeurige getallen opmerkt: “we kunnen niet met gezag stellen dat de eerste reeks niet willekeurig is … ze kan bij toeval zijn gegenereerd.” De kern is dat elk getal in de reeks onafhankelijk is van de andere en niet uit eerdere uitvoer te voorspellen valt.
Er zijn twee brede klassen van generators:
– True Random Number Generators (TRNG’s) – ook wel hardware random number generators (HRNG’s) genoemd – trekken getallen uit fysische verschijnselen die van nature onvoorspelbaar zijn.
– Pseudorandom Number Generators (PRNG’s) – gebruiken deterministische wiskundige algoritmes. Ze lijken willekeurig, maar zijn volledig reproduceerbaar als je de beginstatus (de seed) kent.
Dit onderscheid helder krijgen is de eerste stap om je applicaties veilig te houden. Voor een bredere blik op verschillende soorten willekeur-tools — ook degene die verder gaan dan getallen — bekijk je onze uitgebreide gids over de number random generator.

Het kernprobleem: waarom computers niet ‘echt’ willekeurig kunnen zijn
Een computer is een deterministische machine. Elke instructie volgt een vaste reeks. Om een willekeurig getal te genereren moet een computer terugvallen op een externe bron van entropie of op een algoritme dat willekeur simuleert. Zoals wiskundige John von Neumann in 1951 befaamd zei: “Wie rekenkundige methoden overweegt om willekeurige cijfers te produceren, bevindt zich natuurlijk in een staat van zonde.”
Dat citaat, bewaard in het Wikipedia-artikel over willekeurige-getallengeneratie, vat een fundamentele waarheid samen: rekenkundige (algoritmische) methoden kunnen nooit echt onvoorspelbare getallen produceren. Ze kunnen alleen reeksen opleveren die er voor statistische tests willekeurig uitzien. De enige manier om echte onvoorspelbaarheid te krijgen, is entropie oogsten uit de fysieke wereld — thermische ruis in een weerstand, atmosferische ruis, radioactief verval, of zelfs de chaotische patronen in lava-lampen.
True Random Number Generator (TRNG) versus Pseudorandom Number Generator (PRNG): het cruciale verschil
Het belangrijkste verschil komt neer op de bron van onvoorspelbaarheid:
| Kenmerk | TRNG (True RNG) | PRNG (Pseudorandom RNG) |
|---|---|---|
| Bron | Fysieke entropie (thermische ruis, kwantumeffecten, enz.) | Wiskundig algoritme |
| Deterministisch? | Nee – elke uitvoer hangt af van een fysiek proces | Ja – dezelfde seed geeft altijd dezelfde reeks |
| Reproduceerbaar? | Nee | Ja (als de seed bekend is) |
| Snelheid | Meestal langzamer, beperkt door entropie-oogst | Zeer snel |
| Blokkerend? | Kan blokkeren als de entropievoorraad uitgeput raakt | Niet-blokkerend |
| Gebruiksscenario | Cryptografie, beveiligingssleutels, loterijen | Simulaties, games, niet-beveiligingstoepassingen |
TRNG’s meten direct een fysisch verschijnsel. Veelvoorkomende bronnen zijn thermische ruis in weerstanden, jitter in elektronische schakelingen, shot-ruis in halfgeleiders en kwantumfenomenen zoals het foto-elektrisch effect. Een praktische TRNG bevat doorgaans een ruisbron, een digitalisator, een conditioner (randomness-extractor) voor betere kwaliteit en gezondheidstests om zeker te weten dat de bron nog werkt.
PRNG’s beginnen vanuit een beginwaarde die een random seed wordt genoemd (vaak afkomstig van een TRNG) en passen dan herhaaldelijk een wiskundige transformatie toe om het volgende getal te genereren. De reeks is deterministisch: als je de seed kent, kun je exact dezelfde getallen opnieuw afspelen. Die reproduceerbaarheid is ideaal voor het debuggen van simulaties, maar rampzalig voor de beveiliging als een aanvaller de seed kan achterhalen of raden.
Een derde categorie, Cryptographically Secure Pseudorandom Number Generators (CSPRNG’s), combineert het beste van beide werelden: ze gebruiken een TRNG om een zaad met veel entropie te verkrijgen en zetten dan een zorgvuldig ontworpen algoritme in om een onbeperkte stroom getallen te produceren die computationeel niet van echte willekeur te onderscheiden zijn. Standaard cryptografische ontwerpen volgen deze hybride aanpak, zoals beschreven in het Wikipedia-artikel.
Hoe TRNG’s echte onvoorspelbaarheid creëren
True RNG’s vangen willekeurigheid uit de fysieke omgeving. Een beroemd voorbeeld wordt gebruikt door Cloudflare: een muur van lava-lampen in hun kantoor in San Francisco. Zoals een Cloudflare-blogpost (2017) uitlegt, worden de voortdurend veranderende, onvoorspelbare patronen in de lava-lampen gefotografeerd en gehasht om willekeurige getallen met hoge entropie te produceren. Hoewel lava-lampen een originele aanpak zijn, gebruiken de meeste TRNG’s compactere bronnen zoals de thermische ruis van een in sperrichting aangeslagen diode.
Een ander recent hobbyproject, de Neon Entropy Random Number Generator van Joshua Coleman (mei 2026), gebruikt drie vintage neonlampen. De ontladingsfrequentie van een onder spanning gezette neonlamp varieert onvoorspelbaar, en optische sensoren vangen deze variatie op. Een Raspberry Pi Pico W leest de analoge signalen en produceert SHA-256 64-bits waarden die als willekeurige seeds kunnen dienen. De maker erkent dat het systeem “slecht gekarakteriseerd” is en validatie nodig heeft, maar het illustreert het principe van entropie winnen uit fysische processen.
Waarom PRNG’s het werkpaard van de informatica zijn
PRNG’s zijn overal omdat ze snel, reproduceerbaar en eenvoudig te implementeren zijn. Het Wikipedia-artikel stelt dat ze “centraal staan in toepassingen zoals simulaties (bijv. voor de Monte Carlo-methode), elektronische games (bijv. voor procedurele generatie) en cryptografie.” Bij simulaties is het cruciaal om dezelfde willekeurige reeks opnieuw te kunnen draaien door vanuit dezelfde seed te starten — handig voor debugging. In cryptografie kan een PRNG veilig zijn — zolang de seed geheim blijft.
De meest gebruikte algemene PRNG is de Mersenne Twister (MT19937), bekend om zijn uitstekende statistische eigenschappen en lange periode (2^19937 − 1). Veel programmeertalen (Python, Ruby, PHP) gebruiken de Mersenne Twister als standaard generator voor willekeurige getallen voor niet-cryptografische doeleinden. Maar de Mersenne Twister is niet cryptografisch veilig — een aanvaller kan de interne status reconstrueren na ongeveer 624 opeenvolgende uitvoerwaarden te hebben gezien. Voor alles wat met beveiliging te maken heeft, heb je een CSPRNG nodig. Als je in specifieke talen bouwt, lopen tools zoals de Python random number generator, de Java random number generator en de C++ random number generator je door de juiste aanpak per platform.
Gevolgen in de praktijk: wanneer willekeurige getallen falen (de loterij-fraudezaak)
Het resultaat van een zwakke generator voor willekeurige getallen kan catastrofaal zijn. Het meest sprekende voorbeeld is de Amerikaanse loterij-fraudezaak die in het Wikipedia-artikel wordt beschreven. De directeur informatiebeveiliging van de Multi-State Lottery Association (MUSL) installeerde stiekem backdoor-malware op de beveiligde RNG-computer tijdens routinematig onderhoud. Over meerdere jaren won hij in totaal $ 16,5 miljoen door loterij-getallen te voorspellen. Deze aanval werkte omdat de RNG door de backdoor in feite voorspelbaar was — een klassiek falen door te leunen op een gecompromitteerde of zwakke generator.
Zelfs zonder kwaadwillende backdoors kan gebrekkige willekeurigheid veel schade aanrichten. Het Wikipedia-artikel over willekeurige getallen verwijst naar een incident in 2012 waarbij een fout van 99,8 % (niet volledig 100 %) in de willekeurigheid van een online versleutelingsmethode een geschat aantal van 27.000 klanten van een grote dienst negatief trof. Zulke fouten laten zien dat zelfs kleine afwijkingen van echte willekeurigheid grote gevolgen kunnen hebben.
Een andere opvallende zaak is de Dual EC DRBG-backdoor. Deze door NIST gecertificeerde, cryptografisch veilige generator voor willekeurige getallen werd ervan verdacht een door de NSA ingebrachte backdoor te bevatten, waarmee de NSA (als de theorie klopt) de interne status kon bepalen en versleuteling die ervan afhing kon breken. Zoals het Wikipedia-artikel opmerkt, werd Dual EC DRBG “lang voordat de NSA-backdoor in 2013 werd bevestigd, in de praktijk aanzienlijk gebruikt”, ondanks dat het “een zeer slechte en mogelijk achterdeur-bevattende generator voor willekeurige getallen” was — ook door het beveiligingsbedrijf RSA Security.
Op een luchtiger noot: de populariteit van online tools voor willekeurige getallen laat zien hoeveel mensen erop leunen. Volgens Wheel of Names had de site in 2026 462.479.318 wiel-draaien geregistreerd en meer dan 1,28 miljoen uur gedraaid. De site gebruikt een cryptografisch veilige functie (crypto.getRandomValues()) om echte onvoorspelbaarheid voor haar gebruikers te garanderen, van wie er veel loterijen, klassikale selecties en streaming-giveaways draaien. Deze schaal laat zien dat als een generator faalt, dit miljoenen mensen treft.

Hoe kies je in 2026 de juiste generator voor willekeurige getallen voor jouw gebruiksdoel
De juiste generator kiezen hangt af van de behoefte van je applicatie aan beveiliging, snelheid en reproduceerbaarheid. Gebruik dit beslissingskader:
Voor cryptografie: het verplichte gebruik van CSPRNG’s
Als je applicatie versleutelingssleutels, authenticatie-tokens, sessie-ID’s of enige andere beveiligingsgevoelige gegevens verwerkt, moet je een Cryptographically Secure Pseudorandom Number Generator (CSPRNG) gebruiken. Gebruik voor deze doeleinden nooit Math.random(), random.randint() of de Mersenne Twister. De gevolgen van voorspelbaarheid — financiële diefstal, datalekken, accountovername — zijn te ernstig.
Aanbevolen tools:
– Webbrowsers: Gebruik de Web Crypto API (crypto.getRandomValues()). Dat is wat Wheel of Names gebruikt om willekeur te garanderen.
– Unix/Linux-systemen: Lees uit /dev/urandom. Het levert een niet-blokkerende CSPRNG op, gezaaid door hardware-entropie. (Let op: /dev/random blokkeert tot er genoeg entropie beschikbaar is en wordt niet aangeraden voor grote hoeveelheden leesoperaties.)
– Windows: Gebruik CryptGenRandom() of RNGCryptoServiceProvider.
– Intel-processors: De instructie RDRAND levert willekeurige getallen uit een on-chip hardware-generator, maar veel beveiligingsbewuste systemen mengen de uitvoer met andere entropiebronnen als verdediging tegen mogelijke backdoors.

Voor simulaties en games: de snelheid van PRNG’s (zoals de Mersenne Twister)
Voor Monte Carlo-simulaties, wetenschappelijk rekenen, videospelletjes en procedurele inhoud-generatie tellen snelheid en statistische kwaliteit zwaarder dan cryptografische veiligheid. Hier werkt een snelle PRNG zoals de Mersenne Twister (MT19937) of de nieuwere PCG-familie goed. Deze generators produceren miljarden getallen per seconde en slaagden voor de meeste statistische tests.
- Reproduceerbaarheid is een belangrijk voordeel: starten vanuit dezelfde seed levert dezelfde reeks, wat cruciaal is voor debugging en het herhaalbaar maken van experimenten.
- Let op: Gebruik deze niet voor iets dat met geld, identiteit of toegangscontrole te maken heeft.
Voor loterijen en fairness: de noodzaak van op hardware gebaseerde entropie
Loterijen, sweepstakes, prijslotingen en elk systeem waarin fairness wettelijk of ethisch vereist is, moeten op hardware gebaseerde entropie (TRNG) gebruiken, of op zijn minst een goed ontworpen CSPRNG die gezaaid is met fysieke entropie. De loterij-fraudezaak laat zien dat zelfs een “veilige” RNG gecompromitteerd kan raken als de seed of software wordt gemanipuleerd. Fysieke willekeurigheid uit atmosferische ruis (zoals Random.org), kwantumgeneratoren voor willekeurige getallen of speciale hardware-modules biedt de sterkste garantie van onvoorspelbaarheid.
Voor alledaagse taken zoals het genereren van een willekeurig telefoonnummer voor testdoeleinden levert een random phone number generator snelle, betrouwbare resultaten zonder de complexiteit van cryptografische hardware.
Voor toepassingen met hoge inzet:
– Fysieke bronnen: Gebruik een toegewijde HRNG (bijv. een op thermische ruis of kwantumfoton-emissie gebaseerde).
– Hybride aanpak: Combineer hardware-entropie met een CSPRNG voor snelheid.
– Auditing: Test de uitvoer regelmatig op uniformiteit en onafhankelijkheid (zie sectie 6).
Het nieuwste op het gebied van willekeurigheid: state-of-the-art onderzoek en tools (update 2026)
Hoewel het basale TRNG/PRNG-verschil goed vaststaat, verleggen recente onderzoeken de grenzen van snelheid, efficiëntie en aanpasbaarheid. Een opvallende studie uit 2026, gepubliceerd in Scientific Reports, introduceert DMARS_WGO (Dual-Mode Adaptive Reinforced Switching Walrus-Gazelle Optimizer) — een hybride metaheuristisch algoritme dat reinforcement learning gebruikt om exploratie en exploitatie dynamisch in balans te brengen.
Volgens het paper DMARS_WGO: a deep reinforcement-driven hybrid metaheuristic for intelligent adaptive optimization behaalde het algoritme de eerste rang in 26 van de 29 benchmark-functies van de CEC2017-suite en de eerste rang in 8 van de 12 functies van CEC2022. Hoewel DMARS_WGO primair een optimalisatie-algoritme is (geen algemene RNG), laat het zien hoe machine learning de kwaliteit van willekeurige zoekprocessen kan verbeteren — een direct voordeel van betere willekeurigheid in simulaties.
Voor alledaagse ontwikkelaars is de belangrijkste best practice van 2026 om te leunen op CSPRNG’s op besturingssysteemniveau. Intels instructie RDRAND, beschikbaar in moderne CPU’s, biedt een op hardware gebaseerde generator voor willekeurige getallen die direct vanuit code toegankelijk is. De /dev/urandom van de Linux-kernel gebruikt nu een op ChaCha20 gebaseerde CSPRNG die zowel snel als veilig is. De Web Crypto API (crypto.getRandomValues()) is de standaard geworden voor client-side JavaScript-beveiliging.
Hoe moderne CPU’s willekeurige getallen genereren (RDRNG en daarna)
Moderne processors van Intel en AMD bevatten een ingebouwde hardware-generator voor willekeurige getallen (HRNG), toegankelijk via de instructie RDRAND. Deze generator gebruikt on-chip entropiebronnen — zoals thermische ruis in metaal-oxide-halfgeleider (MOS)-transistors — om willekeurige bits te produceren. Hij kan duizenden willekeurige getallen per seconde leveren.
Omdat hardware echter in theorie kan worden gemanipuleerd (zoals de zaak-Dual EC DRBG laat zien), gebruiken veel beveiligingsgevoelige toepassingen RDRAND niet alleen. Het Wikipedia-artikel stelt dat “het voor willekeurige-getallengeneratie in Linux als onaanvaardbaar wordt beschouwd om Intels RDRAND-hardware-RNG te gebruiken zonder de RDRAND-uitvoer te mengen met andere entropiebronnen.” Deze praktijk, “whitening” genoemd, combineert meerdere onafhankelijke bronnen om het risico op een verborgen backdoor te verkleinen.
Hoe test je de ‘willekeurigheid’ van je getallen?
Zelfs als je een goed ontworpen RNG gebruikt, moet je controleren dat de uitvoer de verwachte statistische eigenschappen toont. De twee belangrijkste checks zijn equiprobabiliteit (elke waarde komt ongeveer even vaak voor) en onafhankelijkheid (geen voorspelbare patronen tussen opeenvolgende waarden).
Volgens de PsychicScience.org-pagina over generators voor willekeurige getallen kun je de methode Math.random() van je browser testen door 100.000 integers in een open reeks binnen een gekozen bereik te genereren. De pagina merkt op dat “de willekeurigheidschecks bij toeval ongeveer 1 keer op de 10 een niet-willekeurige reeks aangeven” — een fout-positief percentage van 10 % is normaal.
De Chi-kwadraat-test eenvoudig uitgelegd
De meest voorkomende statistische test voor willekeurigheid is de Chi-kwadraat (χ²) goodness-of-fit-test. Zo werkt hij in de praktijk:
- Genereer een reeks van N getallen uit je RNG (bijv. 1.000 integers tussen 1 en 6).
- Tel hoe vaak elke waarde voorkomt.
- Vergelijk deze waargenomen tellingen met de verwachte tellingen (bij een uniforme verdeling hoort elke waarde N/6 keer voor te komen).
- Bereken de Chi-kwadraat-statistiek: som over alle categorieën van ((Waargenomen − Verwacht)² / Verwacht).
- Interpreteer: als de waarschijnlijkheid geassocieerd met deze Chi-kwadraat-waarde groter is dan 0,10 (de gangbare drempel), is er geen bewijs van een significante afwijking van willekeurigheid.
Een tweede test voor paarsgewijze onafhankelijkheid controleert of de frequentie van elk mogelijk paar opeenvolgende getallen even waarschijnlijk is. Bij het gooien van een dobbelsteen bijvoorbeeld zouden de paren (1,1), (1,2), …, (6,6) elk met een vergelijkbare frequentie moeten voorkomen. Een Chi-kwadraat-contingentietabel-test kan vertekeningen detecteren, zoals de neiging om af te wisselen tussen hoge en lage waarden.
Veel online tools, waaronder die op PsychicScience.org, bieden ingebouwde Chi-kwadraat-checks. Voor serieuze validatie biedt de NIST Statistical Test Suite (STS) 15 verschillende tests, waaronder frequentie-, runs- en blokfrequentie-tests.
Conclusie
Het begrijpen van het verschil tussen TRNG’s en PRNG’s is de eerste stap om je applicaties te beveiligen en weloverwogen beslissingen te nemen. Een TRNG oogst fysieke entropie; een PRNG gebruikt een deterministisch algoritme en een seed; een CSPRNG combineert beide voor veiligheid. De gevolgen in de praktijk van de verkeerde keuze kunnen financieel verlies, juridische aansprakelijkheid en reputatieschade zijn, zoals de loterij-fraudezaak van $ 16,5 miljoen laat zien.
Praktisch advies: Begin vandaag nog met het auditen van je codebase om er zeker van te zijn dat Math.random() nergens in een context voor beveiliging, authenticatie of tokengeneratie wordt gebruikt. Migreer naar CSPRNG’s voor alle gevoelige operaties. Voor simulaties en games is een snelle PRNG zoals de Mersenne Twister prima, maar wees je altijd bewust van de reproduceerbaarheidseis. En als je een loterij, trekking of enig fairness-kritiek systeem runt, investeer dan in een toegewijde hardware-RNG of een goed gevalideerde CSPRNG met auditabele entropiebronnen. In de woorden van de DMARS_WGO-studie uit 2026 is het vermogen om “zijn zoekdynamiek slim zelf aan te passen” het snijvlak — maar voor de meeste ontwikkelaars is simpelweg de juiste bestaande tool kiezen de meest impactvolle stap.
FAQ
Wat is het verschil tussen een true random number generator (TRNG) en een pseudo-random number generator (PRNG)?
Een TRNG gebruikt fysische processen (thermische ruis, kwantumeffecten, lava-lampen) om getallen te genereren die van nature onvoorspelbaar zijn. Een PRNG gebruikt een wiskundig algoritme en een startseed; de uitvoer lijkt willekeurig, maar is volledig deterministisch. Voor beveiliging is een TRNG of een CSPRNG vereist.
Zijn de willekeurige getallen die door websites worden gegenereerd écht willekeurig?
De meeste websites gebruiken PRNG’s, die deterministisch maar statistisch willekeurig zijn. Betrouwbare sites voor cryptografie of loterijen gebruiken op hardware gebaseerde entropie of CSPRNG’s (bijv. de Web Crypto API). Voor niet-beveiligingstoepassingen zoals naam-kiezers is een eenvoudige PRNG meestal voldoende.
Hoe kan ik cryptografisch veilige willekeurige getallen genereren?
Gebruik speciale API’s zoals de Web Crypto API (crypto.getRandomValues()) in browsers. Op Unix/Linux-systemen lees je uit /dev/urandom. Gebruik Math.random() nooit voor beveiligingsdoeleinden. Voor bulk-generatie zijn moderne CSPRNG’s zoals ChaCha20 snel en veilig.
Geef een reactie