Trebate li brz i pošten način da dobijete slučajan broj? Ovaj besplatni internetski generator slučajnih brojeva generira jedan broj — ili cijeli popis brojeva — u bilo kojem rasponu koji odaberete, od jednostavnog raspona od 1 do 10 pa sve do raspona koji seže u milijarde. Postavite minimalnu i maksimalnu vrijednost u poljima „Min“ i „Maks“, odaberite koliko brojeva trebate u polju „Broj“ i pritisnite „Generiraj“. Obje granice su uključene, tako da raspon od 1 do 10 može vratiti i 1 i 10.
Svaki rezultat generira se izravno u vašem pregledniku putem tehnologije Web Crypto API (crypto.getRandomValues) — koja pruža kriptografski snažne slučajne vrijednosti iz izvora slučajnosti vašeg operativnog sustava. Ništa se ne šalje na poslužitelj, ništa se ne bilježi, i mi nikada ne vidimo vaše brojeve. Generiranje je trenutačno, privatno i nastavlja raditi čak i na sporoj vezi nakon što se stranica učita.
Opcije su osmišljene za stvarne situacije u kojima ljudima doista trebaju slučajni brojevi. Uključite „Bez ponavljanja“ kako se nijedan broj ne bi pojavio dvaput — postavka koja vam treba za ždrijebove, lutrijska izvlačenja ili raspodjelu ljudi u skupine bez ponavljanja. Trebate li dvadeset pobjednika među 500 sudionika? Postavite „Min“ na 1 i „Maks“ na 500, uključite „Bez ponavljanja“, postavite „Broj“ na 20 i pritisnite „Generiraj“. „Redoslijed sortiranja“ raspoređuje rezultat uzlazno ili silazno, a jedan gumb kopira sve rezultate odjednom. Prebacivanje „Formata rezultata“ s „Novi red“ na „Odvojeno razmacima“ ili „Odvojeno zarezima“ otkriva „Broj skupova“: nekoliko neovisnih izvlačenja odjednom — primjerice dvadeset skupova po 3 broja za dvadeset krugova izvlačenja — dok „Dopusti duplikate između skupova“ određuje smije li se isti broj pojaviti u više od jednog od njih.
Kako se slučajnost zapravo generira? Vaš preglednik pruža kriptografski snažne slučajne vrijednosti putem Web Crypto API-ja, a ne putem JavaScript PRNG-a poput Math.random(). Kada pritisnete „Generiraj“, stranica zahtijeva slučajne vrijednosti putem crypto.getRandomValues i koristi ih za generiranje brojeva unutar odabranog raspona. Temeljni izvor slučajnosti dolazi iz preglednika i operativnog sustava, tako da stranica ne mora održavati vlastitu početnu vrijednost, odnosno seed, ili pseudoslučajni niz.
Preslikavanje sirove vrijednosti na vaš raspon mjesto je gdje generatori tiho griješe, i zaslužuje zaseban odlomak. Uzimanje ostatka pri dijeljenju vrijednosti s veličinom raspona očit je pristup i onaj koji je pristran: osim ako se raspon točno ne dijeli u 2^32, najniži brojevi pojavljuju se nešto češće od ostalih. Ta se pogreška naziva modulo bias i mjerljiva je, a ne samo teorijska. Ovaj generator umjesto toga odbacuje vrijednosti koje bi neke brojeve u rasponu učinile vjerojatnijima od drugih i generira nove — tehniku koja se naziva odbacivanje neprikladnih uzoraka (rejection sampling). To košta nekoliko dodatnih pokušaja, ali zauzvrat donosi točno jamstvo: svaki broj između „Min“ i „Maks“ ima potpuno jednaku vjerojatnost, a ne gotovo istu.
Što zapravo čini broj istinski slučajnim? Broj je dovoljno slučajan kada prethodni rezultati ne otkrivaju ništa o sljedećem — a u praksi postoje tri razine toga. Obična pseudoslučajna funkcija poput Math.random() izvršava determinirani algoritam: tko god sazna njezino unutarnje stanje može reproducirati cijeli niz, što je čini prikladnom za miješanje prezentacije, ali neprikladnom za bilo što gdje rezultat ne smije biti predvidiv. Kriptografski sigurni generator (CSPRNG) — razina koju koristi ovaj alat — također je algoritam, ali je osmišljen tako da proizvodi nepredvidive vrijednosti koristeći siguran izvor slučajnosti operativnog sustava, i izgrađen tako da promatranje njegova izlaza ne otkriva ništa o tome što slijedi. Fizička slučajnost, iz izvora poput atmosferskog šuma ili radioaktivnog raspada, predstavlja treću razinu, iako praktična razlika nestaje kada je riječ o generiranju broja iz raspona. Upravo zato preglednici izlažu zaseban kriptografski API umjesto da jednostavno poboljšaju Math.random(): njih dvoje rješavaju različite probleme, a samo je jedan siguran kada rezultat nekome nešto znači.
Slučajan niz ne mora izgledati slučajno ljudima. Generirajte deset brojeva između 1 i 10 i redovito ćete vidjeti ponavljanje, skupina poput 7, 7, 8, ili kratak niz koji sav padne visoko — i svaki od tih slučajeva posve je uobičajen. Prava slučajnost nepredvidiva je, a ne ravnomjerno raspoređena: svaki se broj pojavljuje neovisno o prethodnima, raniji brojevi nemaju apsolutno nikakav utjecaj na kasnije brojeve, i nijedan broj nikada nije „na redu“ više od drugoga. Instinkt koji tvrdi suprotno kockareva je zabluda, i to je isti instinkt zbog kojeg su ljudi sami po sebi loši generatori slučajnih brojeva — kada nas zamole da smislimo slučajan niz, izbjegavamo ponavljanja i raspoređujemo vrijednosti mnogo ravnomjernije nego što bi to slučajnost ikada učinila. Rezultat koji izgleda sumnjivo uredno nosi ljudski potpis; prava slučajnost stvara nakupine.
Zašto odabrati ovaj generator slučajnih brojeva?
- Generiranje samo u pregledniku: brojevi se generiraju na vašem uređaju i nikada se ne šalju nikamo
- Slučajnost putem Web Crypto API-ja: kriptografski sigurna metoda, a ne Math.random()
- Bez modulo biasa: odbacivanje neprikladnih uzoraka (rejection sampling) održava jednaku vjerojatnost za svaki broj u rasponu
- Bilo koji raspon: od 1 do 10 pa do vrijednosti koje sežu u milijarde, obje granice uključene
- Način „Bez ponavljanja“: generirajte popis bez ponavljanja za ždrijebove i raspodjelu skupina
- Više skupova: nekoliko neovisnih izvlačenja jednim klikom
- Sortiranje i formati rezultata: uzlazno ili silazno, novi red, razmaci ili zarezi
- Povijest i spremanje u datoteku: sačuvajte zapis izvlačenja koji možda trebate opravdati
- Neograničeno i besplatno: bez prijave, bez ograničenja korištenja, ništa na našim poslužiteljima
Slučajni brojevi pojavljuju se na mnogo više mjesta nego što većina ljudi očekuje. Nastavnici pozivaju učenike bez favoriziranja. Streameri i marketinški timovi izvlače pobjednike nagradnih igara i ždrijebova pred publikom koja mora vjerovati rezultatu. Igrači zamjenjuju izgubljenu kockicu ili odlučuju tko počinje prvi, a na turnirima se izvlači početni redoslijed. Istraživači biraju slučajan uzorak kako bi njihovi nalazi vrijedili i za ljude koji nisu sudjelovali. Programeri generiraju testne podatke, postavljaju početnu vrijednost, odnosno seed, za simulacije i biraju identifikatore tijekom QA-a. Zajednička je nit slučajan proces odabira koji se kasnije može objasniti: budući da izvlačenje koristi kriptografsku slučajnost i odvija se u potpunosti na vašem uređaju, možete pokazati kako je rezultat generiran ako netko posumnja u njega.
Ovaj generator ima nekoliko važnih ograničenja koja vrijedi znati. Način „Bez ponavljanja“ ne može generirati više brojeva nego što raspon sadrži: dvadeset jedinstvenih vrijednosti između 1 i 10 jednostavno ne postoji. Izvlačenja su neovisna i prethodni rezultati ne utječu na kasnije, tako da osvježavanje stranice ne resetira nikakav ciklus — jednostavno ne postoji ciklus u kojem biste se mogli nalaziti. I iako su brojevi kriptografski snažni, izvlačenje je ovdje pošten izbor, a ne predviđanje: službena izvlačenja lutrije koriste vlastitu fizičku ili certificiranu opremu, i ništa izračunato u vašem pregledniku nema nikakve veze s njima. Unutar tih ograničenja jamstvo je snažno: svaki broj u vašem rasponu ima potpuno jednaku vjerojatnost, pri svakom pojedinom generiranju.