Command Palette

Search for a command to run...

Hoe u willekeurige getallen online kunt genereren: bereiken, unieke sets en wanneer willekeur er daadwerkelijk toe doet

Hoe u willekeurige getallen online kunt genereren: bereiken, unieke sets en wanneer willekeur er daadwerkelijk toe doet

T
Toolz Team
|Aug 23, 2026|15 min lezen

Onderdeel van de collectie generator

De eerste keer dat willekeurige getallen mij beten, was op een Laravel-zijproject, jaren voordat ik begon met het bouwen van Toolz.dev. Ik had korte verwijzingscodes nodig, bereikt voor rand() omdat het daar stond, en het verscheepte Een week later hadden twee gebruikers dezelfde code Niet omdat de kansen astronomisch waren, maar omdat ik verkeerd had begrepen wat rand() eigenlijk beloofd Die kleine schaamte heeft me een les geleerd die ik in elk gereedschap op Toolz.dev heb meegenomen: "random" is niet één ding Er is het toevallige willekeurige dat prima is voor een dobbelsteenworp, en er is het serieuze willekeurige dat je nodig hebt op het moment dat een waarde alles bewaakt.

Deze gids is de lange versie van wat ik wou dat iemand me toen had verteld Ik zal doornemen hoe willekeurige getallen te genereren met de Random Number Generator op Toolz.dev, wanneer unique-only sets materie, waarom de bron van willekeur verandert wat je veilig kunt gebruiken de output voor, en de praktische gevallen waar ik naar reiken tijdens het bouwen.

tl;dr: Een generator voor willekeurige getallen trekt waarden uit een bereik dat u definieert Stel een minimum en maximum in, kies hoeveel getallen u wilt en kies gehele getallen of decimalen Schakel alleen unique in als geen enkele waarde zich herhaalt, wat u wilt voor loterijen, loterijen en bemonstering zonder vervanging De Toolz.dev-generator draait volledig in uw browser en geeft de voorkeur aan de Web Crypto API vanwege zijn willekeur, dus niets dat u genereert verlaat ooit uw apparaat.

Wat doet een random number generator eigenlijk?

Een random number generator wijst een onvoorspelbare bron van bits toe op een bereik Dat is de hele klus In een browser is de bron die er toe doet crypto.getRandomValues(), die de Web Cryptography API vereist om cryptografisch sterk te zijn - in tegenstelling tot Math.random(), die niet zo'n belofte maakt Je vertelt het het interval, zeg 1 tot 100, en het geeft een waarde terug van binnen dat interval waar, idealiter, elke waarde een gelijke kans heeft om te verschijnen Vraag om meer dan één en het herhaalt de trekking.

Het interessante deel is het woord & quot; unpredictable, & quot; omdat computers deterministische machines zijn die van nature geen verrassing produceren Wat ze produceren is pseudo-willekeurigheid: een reeks die er willekeurig uitziet en statistische tests doorstaat maar door een algoritme uit een startzaadje wordt gegenereerd Geef hetzelfde algoritme hetzelfde zaadje en je krijgt elke keer dezelfde reeks Die reproduceerbaarheid is een eigenschap wanneer je een test schrijft die herhaalbaar moet zijn, en een aansprakelijkheid wanneer je iets aan het slaan bent dat onbetwistbaar moet zijn.

Op Toolz.dev zit de generator in de browser en leest zijn bits uit crypto.getRandomValues wanneer de browser het blootlegt, wat elke moderne browser doet Die functie wordt gedefinieerd door de W3C Web Cryptography API en wordt ondersteund door het besturingssysteem' s cryptografisch beveiligde bron Wanneer die bron aanwezig is, zijn de cijfers onvoorspelbaar genoeg voor aan de beveiliging grenzende werkzaamheden zoals het kiezen van tokens of het schudden van een deck Wanneer het op de een of andere manier niet beschikbaar is, valt de tool terug naar de standaard JavaScript-generator, wat prima is voor games en sampling, maar nooit iets geheims mag zaaien Weten in welke van die twee werelden je je bevindt, is het allerbelangrijkste aan het gebruik van welke RNG-bron dan ook.

Hoe genereer ik willekeurige getallen op Toolz.dev?

De stroom is bewust kort omdat je meestal gewoon een nummer wilt en dat nu ook.

Stel eerst het bereik in Voer het minimum en het maximum in Voor gehele getallen is het bereik inclusief aan beide uiteinden, dus 1 tot 6 kan elk van 1, 2, 3, 4, 5 of 6 retourneren, precies zoals een dobbelsteen Negatieve waarden en bereiken die nul omspannen, zoals -50 tot 50, werken op dezelfde manier.

Ten tweede, kies hoeveel getallen je wilt Eén getal voor een snelle keuze, of een batch van maximaal tienduizend wanneer je testgegevens aan het zaaien bent of een monster aan het bouwen bent.

Kies ten derde de opties Laat & quot; alleen gehele getallen inschakelen" aan, of zet het uit en stel het aantal decimalen in wanneer u fractionele waarden nodig hebt Schakel & quot; alleen unieke waarden" in wanneer geen enkel getal zich mag herhalen.

Klik ten slotte op Genereren Het resultaat toont de lijst samen met de som en het gemiddelde, en de hele batch kopieert als een door nieuwe regels gescheiden lijst, zodat deze rechtstreeks in een spreadsheetkolom, een script of een testopstelling valt. Als u de UUID-generator of de Wachtwoordgenerator op Toolz.dev zal de vorm hiervan vertrouwd aanvoelen, omdat ik probeer de generatoren consistent te houden.

Wanneer moet ik alleen unieke nummers gebruiken?

Dit is de optie die mensen missen, en het is degene die de wiskunde het meest verandert.

Standaard tekent de generator met vervanging Elke trekking is onafhankelijk, dus een getal kan meer dan één keer in dezelfde batch voorkomen Dat is correct voor het gooien van dobbelstenen, want een echt dobbelsteenpaar kan absoluut twee vieren bedenken Maar het is verkeerd voor een loterijtrekking, een loterij of elk moment dat u een monster kiest zonder het token terug in de tas te stoppen.

Schakel unique-only in en de generator trekt zonder vervanging Het houdt een registratie bij van wat het al heeft geproduceerd en slaat herhalingen over totdat het uw batch heeft gevuld Het klassieke gebruik zijn lotnummers: als u zes nummers van 1 tot 49 wilt zonder duplicaten, is unique-only het verschil tussen een geldig ticket en een gebroken ticket.

Er is hier een natuurlijke limiet, en de tool respecteert het Je kunt niet meer unieke gehele getallen tekenen dan het bereik kan bevatten Vraag om tien unieke getallen tussen 1 en 5 en er is geen geldig antwoord, want er bestaan slechts vijf verschillende gehele getallen in dat interval In plaats van eeuwig te draaien in een poging een zesde onmogelijke waarde te vinden, stopt de generator en vertelt je dat het bereik te klein is Ik heb die bewaker expres ingebouwd nadat ik te veel naïeve shufflelloops in productiecode had zien hangen.

Gehele getallen of decimalen: welke heb ik nodig?

Gehele getallen dekken de meeste verzoeken dobbelstenen, loterijballen, array-indices en recordtellingen zijn allemaal hele getallen, en de gehele modus geeft je een inclusief bereik dat overeenkomt met hoe mensen over die dingen denken.

Decimalen zijn voor continue grootheden: een willekeurige prijs, een gesimuleerde sensoraflezing, een gewicht, een waarschijnlijkheid Schakel de gehele modus uit en de tool put uit het halfopen interval dat het minimum maar niet het maximum omvat Die halfopen conventie, inclusief minimum en uitgesloten maximum, is dezelfde die ten grondslag ligt aan bijna elke drijvende-komma-RNG in elke taal, inclusief JavaScript en#39; eigen taal Math.random, die een waarde retourneert in het bereik van 0 tot maar exclusief 1. Het matchen van die conventie betekent dat de cijfers die je hier krijgt zich gedragen als de cijfers die je in code zou krijgen.

Je bepaalt ook het aantal decimalen, van één tot tien. Twee plaatsen zijn geschikt voor valuta-achtige waarden, meer als je metingen simuleert die een fijnere resolutie nodig hebben. Houd er rekening mee dat alleen uniek plus decimalen bijna altijd bevredigend is omdat de ruimte van verschillende decimalen enorm is, terwijl alleen uniek plus een klein geheel getal de plek is waar je de hierboven beschreven muur raakt.

Hoe willekeurig is "random enough"?

Hier is de tabel die ik graag eerder had gezien dan dat verwijzingscode-incident. Het brengt de gevallen van algemeen gebruik in kaart met het soort willekeur dat ze feitelijk vereisen.

gebruiksgeval Willekeur nodig Herhalingen toegestaan? vastleggen
Dobbelstenen, bordspellen Pseudo-willekeurig is prima ja Onafhankelijkheid per rol is het punt
Een willekeurige winnaar kiezen Cryptografische voorkeur Nee (alleen uniek) Eerlijkheid is belangrijk, gebruik alleen uniek
Loterij - of loterijnummers Cryptografische voorkeur Nee (alleen uniek) Tekenen zonder vervanging
Bemonsteringsrijen voor analyse Pseudo-willekeurig is prima meestal nee Alleen uniek voor bemonstering zonder vervanging
Zaaitestarmaturen Pseudo-willekeurig is prima ja Reproduceerbaarheid kan zelfs wenselijk zijn
Beveiligingstokens, geheimen Cryptografisch vereist heel weinig Gebruik hier nooit een gewone PRNG

De rij die mensen naar boven brengt is " security tokens." Een RNG voor algemeen gebruik, zelfs een goede, is geen vervanging voor een speciaal gebouwde geheime generator Als u een API-sleutel, een sessietoken of een wachtwoord maakt, gebruikt u een tool die voor die taak is ontworpen, zoals de Wachtwoordgenerator, of een hashing-tool zoals de Hash-generator wanneer u een vaste-lengte digest nodig hebt De willekeurige getallengenerator is voor getallen in een bereik, niet voor cryptografisch sleutelmateriaal, en de eerlijke omlijsting van die grens is nuttiger dan doen alsof één gereedschap alles doet.

Wat kan ik er eigenlijk mee bouwen?

Een paar van de manieren waarop dit zijn plaats in mijn workflow verdient.

Wanneer ik een gebruikersinterface test die lijsten weergeeft, genereer ik een batch van een paar honderd getallen om hoeveelheden, prijzen of scores in te vullen, ze in een armatuur te plakken en plotseling wordt de lay-out met realistische variatie uitgeoefend in plaats van dezelfde drie handgetypte rijen. Voor WordPress-werk op WP Adminify heb ik willekeurige waarden gebruikt om demo-inhoud in te vullen, zodat een instellingenscherm er levend uitziet in een schermafbeelding.

Wanneer een klant een weggeefactie uitvoert, kiest de modus alleen uniek de winnaars eerlijk uit een genummerde lijst met deelnemers. Wijs elke deelnemer een nummer toe, trek zoveel unieke winnaars als er prijzen zijn, klaar. Geen spreadsheetformule, geen argument over de vraag of de trekking is vervalst, omdat de cijfers afkomstig zijn van een bron die wij geen van beiden controleren.

Voor snelle statistische intuïtie is het genereren van een grote batch en het kijken naar de som en het gemiddelde een snelle controle op gezond verstand dat het bereik en de verdeling zich gedragen. Als ik om getallen van 1 tot 100 vraag en het gemiddelde weer in de buurt van 50 komt, is de wereld zoals verwacht.

En voor de alledaagse dingen is het een dobbelsteenroller, een muntslag als je 1 en 2 als kop en munt behandelt, en een & quot; kies een getal" afzender van kleine argumenten Niet elk gebruik hoeft serieus te zijn om nuttig te zijn.

Hoe verhoudt dit zich tot het schrijven van je eigen?

Je zou kunnen schrijven Math.floor(Math.random() * (max - min + 1)) + min en klaar zijn Ik heb die regel duizend keer geschreven Dus waarom naar een tool grijpen?

Twee redenen, beide op de harde manier geleerd De eerste zijn de off-by-one en modulo-bias fouten die sluipen in hand-rolled bereik wiskunde, vooral als je de inclusief-versus-exclusieve grens en de unieke-only vereiste toevoegen De tool behandelt de rand gevallen, met inbegrip van de & quot; u vroeg om meer unieke waarden dan exist" geval, dus je herontdekt ze niet om 2 uur 's nachts De tweede is dat Math.random is expliciet niet cryptografisch veilig, een feit dat de MDN documentatie duidelijk stelt, en het is gemakkelijk om te vergeten dat wanneer je een fragment plakt in code die later iets echts bewaakt De Toolz.dev generator standaard naar de crypto bron, dus het veiligere gedrag is degene die je krijgt zonder erover na te denken.

Voor een eenmalig nummer in een omgeving die u bestuurt, is een fragment prima. Voor herhaalbare trekkingen, unieke sets, batches die u wilt kopiëren of iets waar u standaard de cryptobron wilt, slaat de tool de onhandige delen op.

Als uw werk meer neigt naar codering en opmaak dan naar het genereren van getallen, loopt dezelfde filosofie aan de clientzijde door de rest van de toolbox, vanaf de Lorem ipsum generator voor tijdelijke tekst voor de bredere set die in de Productiviteitstools voor ontwikkelaar gids. En omdat al deze lokaal loopt, is de data privacy het verhaal is voor allemaal hetzelfde: uw invoer blijft in uw browser.

Wat zijn de veelgemaakte fouten die mensen maken met willekeurige getallen?

Na jaren van het bekijken van code, de mijne en andere mensen's, dezelfde handvol fouten komen keer op keer naar voren, en ze zijn de moeite waard om te benoemen, zodat je ze kunt vermijden.

De eerste is verwarrend & quot; onwaarschijnlijk" met " impossible." Mijn referral-code verhaal is precies dit Als je tekent met vervanging uit een bereik, zijn botsingen geen bug, ze zijn een statistische zekerheid gegeven genoeg trekkingen De verjaardagsparadox is de klassieke illustratie: in een groep van slechts 23 mensen is de kans dat twee een verjaardag delen meer dan 50 procent, veel hoger dan intuïtie suggereert, omdat je elk paar vergelijkt, niet iedereen vergelijkt met één vaste datum Als je waarden uniek moeten zijn, hoop dan niet dat het bereik groot genoeg is Schakel alleen unieke en verwijder de twijfel.

De tweede is het grijpen naar de verkeerde bron. Tal van tutorials laten een bereikformule zien waarop is voortgebouwd Math.random en nooit vermelden dat het ongeschikt is voor iets dat gevoelig is voor beveiliging De waarde ziet er willekeurig uit, de demo werkt, en de gewoonte blijft hangen Dan kopieert iemand dat fragment in code die een wachtwoord reset token genereert, en nu de & quot; random" token is voorspelbaar voor iedereen die het onderliggende algoritme begrijpt De regel is bot: als een mens nooit de waarde zou moeten kunnen raden, heeft hij een cryptografische bron nodig De Toolz.dev generator standaard naar die bron, wat de veiligere standaard is om een gewoonte rond te bouwen.

De derde zijn off-by-one fouten aan de bereikgrenzen Inclusieve versus exclusieve eindpunten struikelen zelfs ervaren ontwikkelaars, omdat verschillende talen en verschillende functies verschillende keuzes maken Is 100 een mogelijke uitvoer als ik vraag om 1 tot 100? voor gehele getallen hier, ja, beide uiteinden zijn inbegrepen Voor decimalen is het maximum uitgesloten, overeenkomend met de drijvende-kommaconventie Expliciet zijn over welke conventie van toepassing is voorkomt de stille bug waarbij je dobbelstenen nooit een zes gooien omdat je schreef < max in plaats van <= max.

De vierde gaat ervan uit dat een kleine steekproef er willekeurig uitziet, Echte willekeur levert klontjes en strepen op Draai tien keer een eerlijke munt om en een run van vier koppen is volkomen normaal, toch zien mensen het en gaan ze ervan uit dat de munt, of de generator, kapot is Willekeur is niet hetzelfde als zelfs de afstand Als je gelijkmatig verdeelde waarden wilt, wil je helemaal geen generator voor willekeurige getallen, je wilt een reeks Weten welke je eigenlijk nodig hebt is de helft van het gevecht.

Veelgestelde vragen

Hoe werkt een random number generator?

Een generator voor willekeurige getallen wijst een onvoorspelbare bron van bits toe aan het bereik dat u kiest Deze tool leest bytes uit de Web Crypto API wanneer deze beschikbaar is en schaalt deze in uw minimum-tot-maximum interval, zodat elke waarde in het bereik een gelijke kans heeft om getekend te worden.

Zijn de cijfers echt willekeurig?

Het zijn cryptografisch sterke pseudo-willekeurige getallen, die onvoorspelbaar zijn voor alle praktische doeleinden Wanneer de browser crypto.getRandomValues blootlegt is de uitvoer geschikt voor tokens en shuffling; als alleen de standaardgenerator beschikbaar is zijn de waarden nog steeds goed verdeeld maar mogen niet worden gebruikt voor geheimen.

Hoe genereer ik unieke willekeurige getallen zonder herhalingen?

Schakel de optie unique-only in voordat u genereert Het gereedschap tekent vervolgens zonder vervanging, zodat elk getal in de batch anders is Als u om meer unieke gehele getallen vraagt dan het bereik kan bevatten, vertelt het u in plaats van voor altijd te loopen.

Kan het decimale getallen genereren?

Ja. zet de optie geheel getal uit en stel in hoeveel decimalen u wilt Decimalen worden getrokken uit het halfopen interval dat het minimum omvat maar niet het maximum, wat de standaardconventie is voor continue bereiken.

Kan ik negatieve getallen gebruiken?

Ja. voer een negatief minimum, een negatief maximum of een bereik in dat nul omspant, zoals -50 tot 50. De generator verwerkt negatieve en gemengde bereiken op dezelfde manier als hij met positieve omgaat.

Hoeveel getallen kan ik in één keer genereren?

Tot 10.000 nummers per batch Het resultaat omvat de som en het gemiddelde, zodat u grote batches in één oogopslag kunt controleren en de hele lijst kopieert als door nieuwe regels gescheiden waarden.

Is deze willekeurige getallengenerator gratis en privé?

Ja. 't Is gratis zonder aanmelding en zonder gebruiksplafond, en elk nummer wordt in uw browser gegenereerd Geen bereik, telling of resultaat wordt ooit naar een server verzonden.

Waarvoor kan ik een random number generator gebruiken?

Veel voorkomende toepassingen zijn onder meer het kiezen van loterij- of lotnummers, het gooien van dobbelstenen voor games, het kiezen van een willekeurige winnaar, het plaatsen van testgegevens, het nemen van steekproeven voor analyse en het randomiseren van de volgorde van een lijst. De unieke modus omvat elk geval dat bemonstering nodig heeft zonder herhalingen.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!