Generator slučajnih brojeva

Generirajte slučajan broj, popis ili nekoliko skupova brojeva u bilo kojem rasponu – sve generirano izravno u vašem pregledniku uz kriptografski sigurnu slučajnost, nikada na poslužitelju.

Pritisnite Generiraj za izvlačenje
Opcije

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?

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.

FAQ

Je li slučajnost kriptografski sigurna?

Koristi se Web Crypto API vašeg preglednika (crypto.getRandomValues), koji koristi slučajnost iz kriptografski sigurnog izvora vašeg operativnog sustava. Za razliku od jednostavnih pseudoslučajnih funkcija, njegov je rezultat osmišljen da bude nepredvidiv u praksi, a odbacivanje neprikladnih uzoraka (rejection sampling) održava jednaku vjerojatnost za svaki broj u rasponu umjesto da favorizira najniže vrijednosti.

Kako generirati slučajan broj u određenom rasponu?

Unesite najmanju moguću vrijednost u polje „Min“ i najveću u polje „Maks“, zatim pritisnite „Generiraj“. Obje granice uključene su u rezultat, tako da raspon od 1 do 10 može dati i 1 i 10.

Mogu li generirati nekoliko slučajnih brojeva odjednom?

Da. Postavite polje „Broj“ na potrebnu količinu (do 1000) i generator će proizvesti cijeli popis jednim klikom. Zatim možete kopirati sve rezultate u međuspremnik gumbom za kopiranje, ili ih spremiti u datoteku.

Mogu li generirati više skupova brojeva odjednom?

Da. Prebacite „Format rezultata“ s „Novi red“ na „Odvojeno razmacima“ ili „Odvojeno zarezima“ kako bi se prikazalo polje „Broj skupova“. Postavite ga na broj neovisnih izvlačenja koji trebate — primjerice dvadeset skupova po 3 broja za dvadeset krugova izvlačenja — i odaberite smiju li se duplikati ponoviti u različitim skupovima.

Mogu li sortirati generirane brojeve?

Da. Koristite opciju „Redoslijed sortiranja“ za raspoređivanje svakog popisa uzlazno ili silazno, ili je ostavite na „Bez“ kako biste zadržali brojeve redoslijedom kojim su generirani.

Kako izbjeći duple brojeve?

Uključite prekidač „Bez ponavljanja“. Kada je uključen, svaki generirani broj na popisu je različit — idealno za ždrijebove, nagradne igre ili raspodjelu ljudi u skupine. Imajte na umu da broj ne smije premašiti veličinu raspona: ne možete generirati 20 jedinstvenih brojeva između 1 i 10.

Zašto se stalno ponavljaju isti brojevi?

Zato što se neovisna izvlačenja ponavljaju, i tako izgleda slučajnost. Svako izvlačenje potpuno zanemaruje sva prethodna, tako da u rasponu od 1 do 10 vjerojatnost da se isti broj pojavi dvaput zaredom iznosi 1 prema 10 svaki put — uobičajeno, a ne pokvareno. Ako trebate popis bez ponavljanja, uključite „Bez ponavljanja“; to namjerno ograničava izvlačenje, umjesto da ispravlja pogrešku.

Zašto slučajan niz ne izgleda slučajno?

Zato što je prava slučajnost nepredvidiva, a ne ravnomjerno raspoređena. Ljudi očekuju da će slučajan rezultat biti uredno raspoređen, pa nakupine, ponavljanja i kratki nizovi poput 7, 7, 8 djeluju kao pogreške, iako su upravo ono što slučajnost proizvodi. Niz koji čovjeku izgleda uredno obično nije bio slučajan.

Mogu li vjerovati slučajnosti generiranoj u pregledniku?

Da, kada dolazi od Web Crypto API-ja, kao što je ovdje slučaj. crypto.getRandomValues pruža kriptografski snažne slučajne vrijednosti koristeći izvor slučajnosti operativnog sustava, a ne JavaScript PRNG poput Math.random(). Math.random() je onaj kojemu ne biste trebali vjerovati kada je nešto doista važno: deterministički je i nikada nije osmišljen da bude nepredvidiv.

Mogu li se slučajni brojevi predvidjeti ili na njih utjecati?

Ne ovdje. Vrijednosti dolaze iz kriptografski sigurnog generatora vašeg operativnog sustava, tako da promatranje prethodnih rezultata ne otkriva ništa o sljedećem, a izvlačenje se u potpunosti odvija na vašem uređaju — ne postoji poslužitelj u koji bi se moglo umiješati i nema zahtjeva koji bi netko mogao presresti. Ni mi ne možemo utjecati na vaše rezultate, jer ih nikada ne vidimo.

Je li pogodan za odabir pobjednika nagradnih igara ili ždrijebova?

Da. Dodijelite svakom sudioniku broj, generirajte rezultat u tom rasponu, i pobjeđuje sudionik čiji se broj podudara. Budući da je izvor kriptografski siguran i izvlačenje se odvija u potpunosti na vašem uređaju, postupak je lako objasniti i dokumentirati ako sudionik posumnja u rezultat. Ako birate brojeve za listić lutrije, alat funkcionira kao sredstvo slučajnog odabira, a ne kao predviđanje: službena izvlačenja lutrije nemaju nikakve veze s njim.

Mijenja li osvježavanje stranice slučajnost?

Ne, i to čak nije ni potrebno. Svako izvlačenje već traži nove slučajne vrijednosti od operativnog sustava, tako da su rezultati neovisni bez obzira pritisnete li „Generiraj“ deset puta zaredom ili ponovno učitate stranicu između svakog pritiska. Ne postoji ciklus za resetiranje i nema stanja koje bi zastarjelo — osvježavanje samo briše rezultate prikazane na zaslonu.

Je li generator besplatan, i spremate li moje brojeve?

Alat je potpuno besplatan i ne zahtijeva prijavu. Svi brojevi generiraju se lokalno u vašem pregledniku i nikada ne napuštaju vaš uređaj, tako da ne bismo mogli spremiti niti vidjeti vaše rezultate, čak i da smo htjeli.