Generator slučajnih brojeva

Generišite slučajan broj, listu ili nekoliko setova brojeva u bilo kojem rasponu – sve se generiše direktno u vašem pretraživaču uz kriptografski sigurnu slučajnost, bez slanja rezultata na server.

Pritisnite Generiši za izvlačenje
Opcije

Trebate li brz i pošten način da dobijete slučajan broj? Ovaj besplatni online generator slučajnih brojeva generiše jedan broj – ili cijelu listu brojeva – u bilo kojem rasponu koji odaberete, od jednostavnog raspona od 1 do 10 pa sve do raspona koji sežu u milijarde. Postavite minimalnu i maksimalnu vrijednost u poljima „Min“ i „Maks“, odaberite koliko brojeva vam treba u polju „Broj“, i pritisnite „Generiši“. Obje granice su uključene, tako da raspon od 1 do 10 može vratiti i 1 i 10.

Svaki rezultat se generiše direktno u vašem pretraživaču putem Web Crypto API tehnologije (crypto.getRandomValues) – koja pruža kriptografski sigurne slučajne vrijednosti iz sistemskog izvora slučajnosti operativnog sistema. Ništa se ne šalje na server, ništa se ne bilježi, i mi nikada ne vidimo vaše brojeve. Generisanje je trenutno, privatno, i nastavlja raditi i na sporoj vezi nakon što se stranica učita.

Opcije su napravljene za stvarne situacije u kojima su ljudima zaista potrebni slučajni brojevi. Uključite „Bez ponavljanja“ kako se nijedan broj ne bi pojavio dva puta – postavka koja vam treba za žrijebove, izvlačenja u stilu lutrije, ili podjelu ljudi u grupe bez ponavljanja. Treba vam dvadeset dobitnika među 500 učesnika? Postavite „Min“ na 1 i „Maks“ na 500, uključite „Bez ponavljanja“, postavite „Broj“ na 20 i pritisnite „Generiši“. „Redoslijed sortiranja“ raspoređuje rezultat rastuće ili opadajuće, a jedno dugme kopira sve rezultate odjednom. Prebacivanje „Formata rezultata“ sa „Novi red“ na „Odvojeno razmacima“ ili „Odvojeno zarezima“ otkriva „Broj setova“: nekoliko nezavisnih izvlačenja odjednom – na primjer dvadeset setova po 3 broja za dvadeset krugova žrijeba – dok „Dozvoli duplikate između setova“ određuje da li se isti broj može pojaviti u više od jednog od njih.

Kako se slučajnost zapravo generiše? Vaš pretraživač pruža kriptografski sigurne slučajne vrijednosti putem Web Crypto API-ja, a ne putem JavaScript PRNG-a poput Math.random(). Kada pritisnete „Generiši“, stranica zahtijeva slučajne vrijednosti putem crypto.getRandomValues i koristi ih za generisanje brojeva unutar odabranog raspona. Osnovni izvor slučajnosti dolazi od operativnog sistema, a pretraživač mu pristupa putem Web Crypto API-ja, tako da stranica ne mora održavati vlastitu početnu vrijednost (seed) ili pseudoslučajni niz.

Preslikavanje sirove vrijednosti na vaš raspon je mjesto gdje generatori tiho griješe, i zaslužuje zaseban odlomak. Uzimanje ostatka dijeljenja vrijednosti veličinom raspona je očigledan pristup i onaj koji je pristrasan: osim ako se raspon ne dijeli tačno u 2^32, najniži brojevi se pojavljuju nešto češće od ostalih. Ta greška se naziva modulo bias, i mjerljiva je, a ne samo teorijska. Ovaj generator umjesto toga odbacuje svaku vrijednost iznad najvećeg tačnog umnoška raspona i izvlači ponovo – tehnika koja se naziva rejection sampling. To košta nekoliko dodatnih izvlačenja, ali zauzvrat daje tačnu garanciju: svaki broj između „Min“ i „Maks“ nosi potpuno istu vjerovatnoću, a ne skoro istu.

Šta 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 nivoa toga. Obična pseudoslučajna funkcija poput Math.random() izvršava deterministički algoritam: svako ko sazna njeno interno stanje može reproducirati cijeli niz, što je čini pogodnom za miješanje karata, a neupotrebljivom za bilo šta gdje rezultat ne smije biti predvidiv. Kriptografski sigurni generator (CSPRNG) – nivo koji koristi ovaj alat – također je algoritam, ali je dizajniran da proizvodi nepredvidive vrijednosti koristeći siguran izvor sistemske slučajnosti, i izgrađen tako da posmatranje njegovog izlaza ne otkriva ništa o tome šta slijedi. Fizička slučajnost, iz izvora poput atmosferske buke ili radioaktivnog raspada, stoji iznad oba nivoa, iako praktična razlika nestaje kada je riječ o izvlačenju broja iz raspona. Upravo zato pretraživači izlažu poseban 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. Izvucite deset brojeva između 1 i 10 i redovno ćete vidjeti ponavljanja poput 7, 7, ili kratku seriju visokih vrijednosti – i sve je to potpuno normalno. Prava slučajnost je nepredvidiva, a ne ravnomjerno raspoređena: svako izvlačenje je nezavisno, raniji brojevi nemaju apsolutno nikakav uticaj na kasnije, i nijedan broj nikada nije „na redu“ više od drugog. Instinkt koji tvrdi suprotno je kockareva 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 je otisak čovjeka; prava slučajnost stvara nakupine.

Zašto odabrati ovaj generator slučajnih brojeva?

Slučajni brojevi se pojavljuju na mnogo više mjesta nego što većina ljudi očekuje. Nastavnici pozivaju učenike a da nikoga ne favorizuju. Strimeri i marketinški timovi izvlače dobitnike nagradnih igara i žrijebova pred publikom koja mora vjerovati rezultatu. Igrači zamjenjuju izgubljenu kockicu ili odlučuju ko počinje prvi, a turniri izvlače početni redoslijed. Istraživači biraju slučajan uzorak kako bi njihovi nalazi vrijedili i za ljude koji nisu učestvovali. Programeri generišu testne podatke, postavljaju početnu vrijednost (seed) simulacijama i biraju identifikatore tokom QA. Zajednička nit je 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 generisan ako neko posumnja u njega.

Ovaj generator ima nekoliko važnih ograničenja koja vrijedi znati. Režim „Bez ponavljanja“ ne može izvući više brojeva nego što raspon sadrži: dvadeset jedinstvenih vrijednosti između 1 i 10 jednostavno ne postoji. Izvlačenja su nezavisna i raniji rezultati ne utiču na kasnije, tako da osvježavanje stranice ne resetuje nikakav ciklus – jednostavno ne postoji ciklus u kojem biste bili. I iako su brojevi kriptografski sigurni, izvlačenje ovdje je pošten izbor, a ne predviđanje: službeni tiraži lutrije koriste vlastitu fizičku ili certificiranu opremu, i ništa izračunato u vašem pretraživaču nema nikakvu vezu s njima. Unutar tih ograničenja garancija je snažna: svaki broj u vašem rasponu ima potpuno istu vjerovatnoću pri svakom pojedinačnom izvlačenju.

FAQ

Da li je slučajnost kriptografski sigurna?

Koristi Web Crypto API vašeg pretraživača (crypto.getRandomValues), koji crpi slučajnost iz kriptografski sigurnog izvora vašeg operativnog sistema. Za razliku od jednostavnih pseudoslučajnih funkcija, njegov rezultat je dizajniran da bude nepredvidiv u praksi, a rejection sampling održava jednaku vjerovatnoću za svaki broj u rasponu umjesto da favorizuje najniže vrijednosti.

Kako da generišem slučajan broj u određenom rasponu?

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

Mogu li generisati nekoliko slučajnih brojeva odjednom?

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

Mogu li generisati više setova brojeva odjednom?

Da. Prebacite „Format rezultata“ sa „Novi red“ na „Odvojeno razmacima“ ili „Odvojeno zarezima“ kako bi se pojavilo polje „Broj setova“. Postavite ga na broj nezavisnih izvlačenja koji vam treba – na primjer dvadeset setova po 3 broja za dvadeset krugova žrijeba – i odaberite da li su duplikati dozvoljeni između različitih setova.

Mogu li sortirati generisane brojeve?

Da. Koristite opciju „Redoslijed sortiranja“ da rasporedite svaku listu rastuće ili opadajuće, ili je ostavite na „Ništa“ da zadržite brojeve u redoslijedu u kojem su izvučeni.

Kako izbjeći duple brojeve?

Uključite prekidač „Bez ponavljanja“. Kada je uključen, svaki generisani broj na listi je različit – idealno za žrijebove, nagradne igre, ili podjelu ljudi u grupe. Imajte na umu da broj ne može premašiti veličinu raspona: ne možete izvući 20 jedinstvenih brojeva između 1 i 10.

Zašto se stalno ponavljaju isti brojevi?

Zato što se nezavisna izvlačenja ponavljaju, i tako izgleda slučajnost. Svako izvlačenje potpuno ignoriše sva prethodna izvlačenja, tako da u rasponu od 1 do 10 vjerovatnoća da se isti broj pojavi dva puta zaredom iznosi 1 prema 10 – to je normalno, a ne greška. Ako vam treba lista bez ponavljanja, uključite „Bez ponavljanja“; to namjerno ograničava izvlačenje, umjesto da ispravlja greš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 slučajan rezultat bude uredno raspoređen, pa nakupine, ponavljanja i kratki nizovi poput 7, 7, 8 djeluju kao greš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 generisanoj u pretraživaču?

Da, kada dolazi od Web Crypto API-ja, kao što je ovdje slučaj. crypto.getRandomValues pruža kriptografski sigurne slučajne vrijednosti koristeći sistemski izvor slučajnosti operativnog sistema, a ne JavaScript PRNG poput Math.random(). Math.random() je taj kojem ne treba vjerovati kada je nešto zaista bitno: on je deterministički i nikada nije dizajniran da bude nepredvidiv.

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

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

Da li je pogodan za biranje dobitnika nagradnih igara ili žrijebova?

Da. Dodijelite svakom učesniku broj, generišite rezultat u tom rasponu, i pobjeđuje učesnik čiji broj odgovara. Budući da je izvor kriptografski siguran i izvlačenje se odvija u potpunosti na vašem uređaju, proces je lako objasniti i dokumentovati ako učesnik posumnja u rezultat. Ako birate brojeve za listić lutrije, alat funkcioniše kao sredstvo slučajnog odabira, a ne kao predviđanje: službeni tiraži lutrije nemaju nikakvu vezu s njim.

Da li osvježavanje stranice mijenja slučajnost?

Ne, i to čak nije ni potrebno. Svako izvlačenje već traži nove slučajne vrijednosti od operativnog sistema, tako da su rezultati nezavisni bez obzira da li pritisnete „Generiši“ deset puta zaredom, ili ponovo učitate stranicu između svakog pritiska. Nema ciklusa za resetovanje i nema stanja koje bi zastarjelo – osvježavanje samo briše rezultate prikazane na ekranu.

Da li je generator besplatan, i čuvate li moje brojeve?

Alat je potpuno besplatan i ne zahtijeva registraciju. Svi brojevi se generišu lokalno u vašem pretraživaču i nikada ne napuštaju vaš uređaj, tako da ne bismo mogli sačuvati niti vidjeti vaše rezultate, čak i da smo htjeli.