Waar te beginnen
Lees wat een willekeurige nummer generator is: hardwarematige, pseudowillekeurige en cryptografisch veilige generators, waarom getallen zich herhalen en wat de browser te bieden heeft. Als je getallen nodig hebt in plaats van uitleg, genereert de willekeurige getallengenerator ze in je browser in elk gewenst bereik, met of zonder herhalingen.
Waar generators ongemerkt de mist in gaan
Een sterke bron van willekeur is slechts het halve werk. De andere helft bestaat uit het vertalen van de ruwe waarden naar je bereik, en dat is waar veel zelfgemaakte generators falen. Een waarde modulo de omvang van het bereik nemen ligt voor de hand, maar zorgt voor een subtiele vertekening: tenzij de uitvoerruimte van de bron precies deelbaar is door de omvang van het bereik, vallen de laagste getallen in het bereik net iets vaker dan de rest. Deze fout heet modulo-afwijking (modulo bias). Eén oplossing is rejection sampling: gooi de waarden weg die in het ongelijke restgedeelte vallen en trek opnieuw. Onze generator doet dit, zodat elk getal in je bereik bij elke trekking evenveel kans maakt.
Dezelfde redenering sluit de sluiproutes uit die mensen vaak als eerste kiezen. Math.random() biedt geen enkele garantie qua veiligheid, en spreadsheetfuncties zoals RAND() en RANDBETWEEN() horen in dezelfde categorie thuis: prima voor het grof schudden van een lijst, maar ongeschikt voor iets wat iemand zou kunnen aanvechten.
Getallen, lijsten en dobbelstenen
Een willekeurige getallengenerator geeft getallen uit een door jou ingesteld bereik. Een willekeurige kiezer werkt met een lijst die je plakt — namen, inzendingen, opties — zodat je getallen nooit handmatig aan rijen hoeft te koppelen. Voor bordspellen gooit de tool voor dobbelstenen gooien de dobbelstenen en telt de ogen op, en voor een keuze tussen twee opties volstaat kop of munt. Wanneer willekeur iets moet beveiligen in plaats van beslissen, gebruik je de generator voor sterke wachtwoorden. Ze maken allemaal gebruik van dezelfde cryptografisch veilige bron in je browser.