Willekeurige generator: maak een willekeurig getal en ontdek er alles over!
Willekeurige generator: maak een willekeurig getal en ontdek er alles over!

Willekeurige generator: maak een willekeurig getal en ontdek er alles over!

Een Willekeurige generator is een gereedschap of algoritme dat onvoorspelbare en niet-deterministische resultaten produceert. Deze generatoren zijn essentieel op veel gebieden, van cryptografie tot computersimulatie.

  • Onvoorspelbare resultaten: Willekeurige generatoren leveren resultaten die niet kunnen worden voorspeld.
  • Gebruik in cryptografie: Ze zijn cruciaal voor veilige communicatie.
  • Computersimulaties: Vaak gebruikt bij het modelleren en analyseren van complexe systemen.

Willekeurige getallengenerator


Willekeurige generator: maak een willekeurig getal en ontdek er alles over! - 22 juli 2024

Hoe werkt een willekeurige getallengenerator? ?

Random generatoren werken ofwel met fysische processen of wiskundige algoritmes. De belangrijkste types zijn true random number generators (TRNGs) en pseudo-random number generators (PRNGs).

Waar spelen we blackjack online?

We hebben de beste ervaringen gehad bij Black Jack in de Playamo Live Spellen gemaakt. Naar mijn mening is dat waar het om draait, BESTE SELECTIE aan tafels met live dealers en je kunt heel goed trainen voor het echte casino! Vergeleken met andere online casino's worden de winsten bij Playamo echt uitbetaald en daarom zou ik Playamo Online Casino zeker aanraden!

Het Playamo Casino heeft veel live tafels voor blackjack en een Snelle betaling van Win.
KLIK NU OP DE KNOP OM JE BONUS VEILIG TE STELLEN!
Playamo Casino Banner

Verschillende toepassingen van willekeurigheid hebben geleid tot de ontwikkeling van verschillende methoden om willekeurige gegevens te genereren. Sommige daarvan bestaan al sinds de oudheid, waaronder bekende voorbeelden als dobbelen, muntwerpen, het schudden van speelkaarten, het gebruik van duizendbladstelen (voor waarzeggerij) in de I Tjing en talloze andere technieken. Door de mechanische aard van deze technieken vereiste het genereren van grote hoeveelheden voldoende willekeurige getallen (belangrijk in de statistiek) veel arbeid en tijd. Daarom werden de resultaten soms verzameld en verspreid als willekeurige getallen tabellen.

Vergelijk de beste online casino's

Playamo Casino Logo

Playamo Casino Testwinnaar

Welkomstbonus: 100% tot €300

⭐⭐⭐⭐⭐
Spelen bij Playamo
Logo Nationaal Casino

Nationaal casino

Welkomstbonus: 100% tot €100 + 100 gratis spins

⭐⭐⭐⭐
Spelen bij Nationaal Casino
20Bet Casino Logo

20Bet Casino

Welkomstbonus: 100% tot €120

⭐⭐⭐⭐
Spelen bij 20Bet

Er bestaan verschillende berekeningsmethoden om pseudorandom getallen te genereren. Ze slagen er allemaal niet in om het doel van echte willekeur te bereiken, hoewel ze wel, met wisselend succes, voldoen aan sommige van de statistische Tests voor willekeurigheid, die ontworpen zijn om te meten hoe onvoorspelbaar hun resultaten zijn (d.w.z. in welke mate hun patronen herkenbaar zijn). Dit maakt ze over het algemeen onbruikbaar voor toepassingen zoals cryptografie. Er zijn echter ook zorgvuldig ontworpen cryptografisch veilige pseudorandom getalgeneratoren (CSPRNGS) met speciale eigenschappen die speciaal ontworpen zijn voor de Invoegen werden ontwikkeld in cryptografie.

Willekeurige generator: maak een willekeurig getal en ontdek er alles over! - 22 juli 2024

Toepassingen van toevalsgeneratoren

  1. Spelletjes en entertainment:
    • Willekeurige generatoren worden in spellen gebruikt om onvoorspelbare elementen te creëren, zoals dobbelsteenworpen, kaarttrekkingen of het genereren van levels.
  2. Cryptografie:
    • In informatiebeveiliging zijn willekeurige getalgeneratoren cruciaal voor het genereren van sleutels, zouten en nonces, die nodig zijn voor encryptie en authenticatie.
  3. Statistieken en steekproeven:
    • Bij het samenstellen van steekproeven voor enquêtes en studies helpen toevalsgeneratoren om representatieve en onbevooroordeelde steekproeven te trekken.
  4. Simulatiemodellen:
    • In wetenschap en technologie worden willekeurige getallengeneratoren gebruikt om Monte Carlo simulaties uit te voeren die willekeurige variabelen gebruiken om complexe systemen te modelleren en te analyseren.
  5. Loterijen en wedstrijden:
    • Ze zorgen voor een eerlijke en willekeurige selectie van winnaars in loterijen, sweepstakes en andere wedstrijden.
  6. Optimalisatie-algoritmen:
    • Willekeurige methoden zoals genetische algoritmen en gesimuleerde annealing gebruiken willekeurige generatoren om efficiënt oplossingsruimten te doorzoeken en optimale oplossingen te vinden.
  7. Kunstmatige intelligentie en machinaal leren Leren:
    • Willekeurige generatoren worden gebruikt om gegevenssets te mengen en willekeurig trainings- en testgegevens te selecteren om de modellen te valideren en te trainen.

Willekeurige getallengeneratoren hebben toepassingen in Gokkenin statistische steekproeven, computersimulatie, cryptografie, volledig willekeurig ontwerp en andere gebieden waar het genereren van een onvoorspelbaar resultaat wenselijk is. In het algemeen wordt in toepassingen waar onvoorspelbaarheid het belangrijkste kenmerk is, zoals beveiligingstoepassingen, de voorkeur gegeven aan hardwaregeneratoren.

Pseudo-willekeurige getallengeneratoren zijn erg nuttig bij de ontwikkeling van Monte Carlo simulatiemethodes, omdat het debuggen vergemakkelijkt wordt door dezelfde reeks willekeurige getallen te kunnen herhalen als je begint met hetzelfde willekeurige zaad. Ze worden ook gebruikt in cryptografie - zolang het zaadje geheim blijft. De verzender en ontvanger kunnen automatisch dezelfde reeks getallen genereren om als sleutel te gebruiken.

Het genereren van pseudo-willekeurige getallen is een belangrijke en veelvoorkomende taak in computerprogrammering. Terwijl cryptografie en bepaalde numerieke algoritmen een zeer hoge mate van schijnbare willekeurigheid vereisen, vereisen veel andere bewerkingen slechts een bescheiden mate van onvoorspelbaarheid. Enkele eenvoudige voorbeelden zijn het presenteren van een "willekeurige quote van de dag" aan een gebruiker of het bepalen in welke richting een computergestuurde tegenstander in een computerspel beweegt. Zwakkere vormen van willekeur worden gebruikt in hash-algoritmen en bij het maken van geamortiseerde zoek- en sorteeralgoritmen.

Sommige toepassingen die op het eerste gezicht geschikt lijken voor randomisatie zijn in werkelijkheid niet zo eenvoudig. Bijvoorbeeld, een systeem dat muzieknummers "randomiseert" voor een achtergrondmuzieksysteem hoeft alleen maar willekeurig te verschijnen en kan zelfs manieren hebben om de muziekselectie te controleren: een echt gerandomiseerd systeem zou geen beperking hebben op het twee of drie keer achter elkaar verschijnen van hetzelfde nummer.


Echte willekeurige getallen vs. pseudo-willekeurige getallen ?

Het verschil tussen echte en pseudo-willekeurige getallen zit in de voorspelbaarheid en de bron van de willekeur.

#1 BLACK JACK LIVE CASINO: PLAYAMO

Playamo Casino Bonus
  • Echte willekeurige getallen: Onvoorspelbaar, gebaseerd op fysische processen.
  • Pseudo-willekeurige getallen: Gegenereerd door algoritmen, voorspelbaar als het zaad bekend is.

Er zijn twee belangrijke methoden om willekeurige getallen te genereren. De eerste methode meet een fysisch fenomeen dat als willekeurig wordt beschouwd en compenseert vervolgens voor mogelijke verstoringen in het meetproces. Voorbeelden van bronnen zijn de meting van atmosferische ruis, thermische ruis en andere externe elektromagnetische en kwantummechanische verschijnselen. Bijvoorbeeld, kosmische achtergrondstraling of radioactief verval gemeten over korte perioden zijn bronnen van natuurlijke entropie (als maat voor de onvoorspelbaarheid of verrassing van het getalgeneratieproces).

De snelheid waarmee entropie kan worden onttrokken aan natuurlijke bronnen hangt af van de onderliggende fysische fenomenen die worden gemeten. Daarom worden bronnen van natuurlijk voorkomende "echte" entropie blokkerend genoemd - ze zijn snelheidsgelimiteerd totdat er genoeg entropie is verzameld om aan de vraag te voldoen. Op sommige Unix-achtige systemen, waaronder de meeste Linux distributies, blokkeert het pseudo apparaatbestand /dev/random totdat er voldoende entropie is verzameld uit de omgeving. Vanwege dit blokkeergedrag kunnen grote bulkgegevenslezingen van /dev/random, zoals het vullen van een harde schijf met willekeurige bits, vaak traag zijn op systemen die dit type entropiebron gebruiken.

De tweede methode maakt gebruik van computationele algoritmes die lange reeksen schijnbaar willekeurige resultaten kunnen genereren die in feite volledig bepaald worden door een kortere beginwaarde, gekend als de zaadwaarde of sleutel. Hierdoor kan de hele schijnbaar willekeurige reeks worden gereproduceerd als de zaadwaarde bekend is. Dit type willekeurige getallengenerator wordt vaak een pseudo-willekeurige getallengenerator genoemd. Dit type generator is meestal niet blokkerend, dus het wordt niet gelimiteerd door een externe gebeurtenis, waardoor grote bulk data gelezen kan worden.

Sommige systemen gebruiken een hybride aanpak die willekeurigheid verzamelt uit natuurlijke bronnen wanneer die beschikbaar zijn en vertrouwt op cryptografisch veilige pseudorandom getalgeneratoren (CSPRNGs) die periodiek opnieuw worden gesed wanneer de gewenste leessnelheid groter is dan het vermogen van de natuurlijke verzamelaanpak om aan de vraag te voldoen. Deze aanpak vermijdt het snelheidsbeperkte blokkeringsgedrag van random getalgeneratoren die gebaseerd zijn op langzamere en puur omgevingsgebaseerde methoden.

Hoewel een pseudo-willekeurige getalgenerator die alleen gebaseerd is op deterministische logica nooit beschouwd kan worden als een "echte" willekeurige bron in de zuiverste zin van het woord, zijn ze in de praktijk over het algemeen voldoende, zelfs voor veeleisende veiligheidskritische toepassingen. Zorgvuldig ontworpen en geïmplementeerde pseudo-willekeurige getallengeneratoren kunnen gecertificeerd worden voor veiligheidskritische cryptografische doeleinden, zoals het geval is met de Yarrow en Fortuna algoritmen. De eerstgenoemde is de basis van de /dev/random entropie bron op FreeBSD, AIX, macOS, NetBSD en anderen. OpenBSD gebruikt een pseudo-willekeurig getallenalgoritme dat bekend staat als arc4random.


Generatiemethoden

Fysieke methoden

De vroegste methoden om willekeurige getallen te genereren, zoals dobbelen, tossen met munten en roulettewielen, worden vandaag de dag nog steeds gebruikt, voornamelijk in spellen en gokken, omdat ze te langzaam zijn voor de meeste toepassingen in de statistiek en cryptografie.

Een fysische random getalgenerator kan gebaseerd zijn op een in wezen willekeurig atomair of subatomair fysisch fenomeen waarvan de onvoorspelbaarheid toegeschreven kan worden aan de wetten van de kwantummechanica. Bronnen van entropie zijn onder andere radioactief verval, thermische ruis, schotruis, lawaairuis in Zener-diodes, klokafwijkingen, de temporele bewegingen van een leeskop van een harde schijf en radiogeluiden. Fysische verschijnselen en instrumenten die gebruikt worden om ze te meten vertonen echter over het algemeen asymmetrieën en systematische vervormingen waardoor hun resultaten niet uniform willekeurig zijn. Een willekeurige extractor, zoals een cryptografische hashfunctie, kan gebruikt worden om een uniforme verdeling van bits uit een niet-uniform willekeurige bron te verkrijgen, maar met een lagere bitsnelheid.

In 2013 werd een prototype ontwikkeld van een snelle realtime random getalgenerator op basis van een chaotische laser.

Er zijn verschillende inventieve methoden ontwikkeld om deze entropische informatie te verzamelen. Eén techniek is om een hashfunctie toe te passen op een frame van een videostream van een onvoorspelbare bron. Lavarand gebruikte deze techniek met beelden van meerdere lavalampen. HotBits mat radioactief verval met Geiger-Müllerbuizen, terwijl Random.org fluctuaties in de amplitude van atmosferische ruis registreerde met een gewone radio.

Computerondersteunde methoden

De meeste willekeurige getallen die door computers gegenereerd worden, maken gebruik van PRNGs. Dit zijn algoritmes die automatisch lange reeksen getallen kunnen genereren met goede willekeurigheidseigenschappen, maar uiteindelijk herhalen de reeksen zich (of groeit het geheugengebruik oneindig). Deze willekeurige getallen volstaan in veel situaties, maar zijn niet zo willekeurig als getallen die gegenereerd worden met elektromagnetische atmosferische ruis die gebruikt wordt als entropiebron. De reeks waarden die door dergelijke algoritmen wordt gegenereerd, wordt over het algemeen bepaald door een vast getal dat de zaad wordt genoemd. Een van de meest voorkomende PRNGs is de lineaire congruentiegenerator, die gebruik maakt van de recurrentierelatie

Xn+1=(aXn+b)mod mX_{n+1} = (aX_n + b) \mod mXn+1=(aXn+b)modm

wordt gebruikt om getallen te genereren waarbij aaa, bbb en mmm grote gehele getallen zijn en Xn+1X_{n+1}Xn+1 het volgende getal is in een reeks pseudorandom getallen. Het maximale aantal getallen dat de formule kan genereren is de module mmm. De recurrentierelatie kan worden uitgebreid naar matrices om veel langere perioden en betere statistische eigenschappen te krijgen. Om bepaalde onwillekeurige eigenschappen van een enkele lineaire congruentiegenerator te vermijden, kunnen meerdere van dergelijke random getalgeneratoren met lichtjes verschillende waarden van de vermenigvuldigingscoëfficiënt aaa parallel gebruikt worden, waarbij een "master" random getalgenerator tussen de verschillende generatoren selecteert.

Een eenvoudige methode voor het handmatig genereren van willekeurige getallen is de zogenaamde gemiddelde kwadratenmethode, die werd voorgesteld door John von Neumann. Hoewel deze methode eenvoudig te implementeren is, is de output van slechte kwaliteit. Het heeft een zeer korte periode en ernstige zwakheden, zoals het feit dat de uitvoerreeks bijna altijd naar nul convergeert. Een recente innovatie is het combineren van de gemiddelde kwadratenmethode met een Weyl-reeks. Deze methode levert outputs van hoge kwaliteit over een lange periode.

De meeste programmeertalen bevatten functies of bibliotheekroutines die willekeurige getallengeneratoren bieden. Ze zijn vaak ontworpen om een willekeurig byte of woord of een uniform verdeeld drijvend komma getal tussen 0 en 1 te genereren.

De kwaliteit, d.w.z. randomness, van zulke bibliotheekfuncties varieert sterk, van volledig voorspelbare uitvoer tot cryptografisch veilig. De standaard random getalgenerator in veel talen, waaronder Python, Ruby, R, IDL en PHP, is gebaseerd op het Mersenne Twister algoritme en is niet voldoende voor cryptografische doeleinden, zoals expliciet vermeld staat in de documentatie van de taal. Dergelijke bibliotheekfuncties hebben vaak slechte statistische eigenschappen en sommige herhalen patronen al na tienduizenden proeven. Ze worden vaak geïnitialiseerd met de real-time klok van een computer als zaad, aangezien zo'n klok 64-bit is en in nanoseconden meet, ver voorbij de precisie van een mens. Deze functies kunnen voldoende randomness bieden voor bepaalde taken (bijv. videospellen), maar zijn ongeschikt wanneer randomness van hoge kwaliteit vereist is, zoals in cryptografische toepassingen of statistiek.

Op de meeste besturingssystemen zijn random getalgeneratoren van hogere kwaliteit beschikbaar; bijvoorbeeld /dev/random op verschillende BSD derivaten, Linux, Mac OS X, IRIX en Solaris, of CryptGenRandom voor Microsoft Windows. De meeste programmeertalen, inclusief de bovengenoemde, bieden een manier om toegang te krijgen tot deze bronnen op een hoger niveau.

Gegenereerd door mensen

Willekeurige getallen kunnen ook door mensen worden gegenereerd door verschillende inputs van eindgebruikers te verzamelen en deze te gebruiken als bron van willekeurigheid. Uit de meeste onderzoeken blijkt echter dat mensen een zekere mate van onwillekeurigheid vertonen wanneer ze een willekeurige reeks van bijvoorbeeld cijfers of letters proberen te genereren. Ze kunnen te vaak wisselen tussen keuzes in vergelijking met een goede randomiser; daarom wordt deze benadering niet veel gebruikt. Om dezelfde reden dat mensen slecht presteren in deze taak, kan het genereren van willekeurige getallen bij mensen gebruikt worden als hulpmiddel om inzichten te krijgen in hersenfuncties die niet toegankelijk zijn met andere middelen.

Nabewerking en statistische controles

Zelfs met een plausibele bron van willekeurige getallen (misschien van een op kwantummechanica gebaseerde hardwaregenerator) moet er goed opgelet worden om volledig onbevooroordeelde getallen te verkrijgen. Het gedrag van deze generatoren verandert vaak door temperatuur, voedingsspanning, de leeftijd van het apparaat of andere externe invloeden.

Gegenereerde willekeurige getallen worden soms onderworpen aan statistische tests voordat ze gebruikt worden om er zeker van te zijn dat de onderliggende bron nog steeds werkt en worden dan nabewerkt om hun statistische eigenschappen te verbeteren. Een voorbeeld hiervan is de TRNG9803 hardware random nummergenerator die een entropiemeting gebruikt als hardwaretest en vervolgens de random reeks post-processed met een shift register stream cipher. Het is over het algemeen moeilijk om statistische tests te gebruiken om de gegenereerde willekeurige getallen te valideren. Wang en Nicol stelden een op afstand gebaseerde statistische testtechniek voor die wordt gebruikt om de zwakke punten van meerdere willekeurige getallengeneratoren te identificeren. Li en Wang stelden een methode voor om willekeurige getallen te testen op basis van laser chaotische entropiebronnen met behulp van eigenschappen van Brownse beweging.

Statistische tests worden ook gebruikt om er zeker van te zijn dat de post-processed uiteindelijke output van een random getalgenerator echt onvertekend is.

Verdere overwegingen

Distributie aanpassen

Uniforme verdelingen

De meeste random getalgeneratoren werken van nature met gehele getallen of enkele bits, dus is er een extra stap nodig om de "canonieke" uniforme verdeling tussen 0 en 1 te bereiken. De implementatie is niet zo triviaal als het delen van het gehele getal door de maximaal mogelijke waarde. Specifiek:

  • Het gehele getal dat in de transformatie wordt gebruikt, moet voldoende bits bieden voor de beoogde precisie.
  • De aard van floating point rekenen zelf betekent dat er meer precisie is naarmate het getal dichter bij nul ligt. Deze extra precisie wordt normaal gesproken niet gebruikt vanwege het grote aantal benodigde bits.
  • Afrondingsfouten tijdens het delen kunnen het resultaat vervormen. In het ergste geval kan een zogenaamd uitgesloten gebied worden getekend met echte getallen, tegen de verwachtingen van wiskunde in.

Het algemene algoritme dat wordt gebruikt door OpenJDK, Rust en NumPy is beschreven in een voorstel voor de STL van C++. Het maakt geen gebruik van de extra precisie en heeft alleen last van vervorming in het laatste bit door afronding naar het dichtstbijzijnde even getal. Andere numerieke bezwaren gelden als deze "canonieke" uniforme verdeling wordt verschoven naar een ander bereik. Een voorgestelde methode voor de programmeertaal Swift claimt overal volledige precisie te gebruiken.

Uniform verdeelde gehele getallen worden vaak gebruikt in algoritmes zoals de Fisher-Yates shuffle. Ook hier kan een naïeve implementatie een modulo vervorming in het resultaat introduceren, dus moeten er uitgebreidere algoritmes gebruikt worden. Een methode die bijna nooit een deling uitvoert werd beschreven door Daniel Lemire in 2018, met als huidige stand van de techniek het op rekenkundige codering geïnspireerde "optimale algoritme" door Stephen Canon van Apple Inc. in 2021.

De meeste 0 tot 1 RNGs bevatten 0 maar sluiten 1 uit, terwijl andere RNGs beide wel of niet bevatten.

Andere distributies

Gegeven een bron van uniform verdeelde willekeurige getallen, zijn er enkele methodes om een nieuwe willekeurige bron te creëren die overeenkomt met een kansdichtheidsfunctie. Eén methode, de inversiemethode genaamd, omvat het integreren tot een bereik dat groter of gelijk is aan het willekeurige getal (dat gegenereerd moet worden tussen 0 en 1 voor correcte verdelingen). Een tweede methode, de acceptatie-afwijzingsmethode, bestaat uit het kiezen van een x- en y-waarde en het testen of de functie van x groter is dan de y-waarde. Als dit het geval is, wordt de x-waarde geaccepteerd. Anders wordt de x-w

nl_NLNederlands