Online generator slučajnih brojeva

Acrafto Team Matematika
Ažurirano
Brzi predlošci
Sve radi u vašem pregledniku. Nijedan broj nikad ne napušta vaš uređaj.

Kako radi generator slučajnih brojeva?

Generator vam nudi dva izvora slučajnosti, a vi birate koji odgovara zadatku.

Sigurni slučajni brojevi crpe entropiju iz vašeg operacijskog sustava putem Web Crypto API-ja (crypto.getRandomValues()). Nepredvidivi su i neponovljivi — pravi izbor za stvarno izvlačenje u kojem nitko unaprijed ne smije moći pogoditi ishod.

Seed način pretvara bilo koji tekst koji upišete u početno stanje deterministički generatora (xoshiro128**). Isti seed uvijek proizvodi iste brojeve, pa svatko može ponoviti vaše izvlačenje i potvrditi da ste dobili upravo ono što tvrdite.

Oba načina rade u potpunosti u vašem pregledniku. Nijedan broj nikad ne stiže na poslužitelj.

Bez modulo pristranosti

Većina jednostavnih generatora preslikava slučajnu 32-bitnu vrijednost na vaš raspon pomoću value % range. Kad se raspon ne dijeli točno u 2³², najniži brojevi izlaze nešto češće od ostalih. Kroz tisuće izvlačenja to postaje mjerljivo.

Ovaj generator umjesto toga koristi rejection sampling (odbacivanje uzoraka): vrijednosti koje bi upale u neravnomjerni „rep” bacaju se i ponovno izvlače. Svaki broj u vašem rasponu ima potpuno istu šansu. To možete i sami provjeriti ugrađenim testom ravnomjernosti.

Što generator može

Raspon

  • Minimum i maksimum — bilo koji cjelobrojni ili decimalni raspon, uključujući negativne vrijednosti
  • Koliko brojeva — od 1 do 1 000 000 u jednom izvlačenju
  • Bez ponavljanja — svaki broj se pojavljuje najviše jednom, kao u pravom izvlačenju
  • Sortiranje — redoslijed izvlačenja, uzlazno ili silazno; sortiranje nikad ne utječe na slučajnost
  • Korak — ograničite rezultate na višekratnike vrijednosti, tako da izlaze samo 0, 5, 10, 15
  • Isključivanje brojeva — navedite vrijednosti koje se nikad ne smiju izvući

Način rada

  • Izvor slučajnosti — siguran (Web Crypto) ili seed (ponovljiv)
  • Seed — bilo koji tekst; isti seed uvijek ponavlja isto izvlačenje
  • Distribucija — uniformna, normalna (Gaussova), eksponencijalna, Poissonova, trokutasta, binomna
  • Težine — dajte odabranim brojevima veću šansu, zapisano kao number:weight
  • Zapis kockica3d6+2, d20, 2d20kh1 za prednost (advantage), 4d6dl1 za bacanje statistika lika

Izlaz

  • Razdjelnik — zarez, razmak, točka-zarez, tabulator, novi redak ili bilo što upišete
  • Brojevni sustav — decimalni, binarni, oktalni, heksadecimalni ili baza 36
  • Popunjavanje nulama — pretvorite 7 u 007 za brojeve karata ili ID-eva
  • Prefiks i sufiks — omotajte svaki broj fiksnim tekstom
  • Predložak{n} je broj, {i} njegova pozicija, pa user{n} postaje user42
  • Kopiraj kao — obični tekst, CSV, JSON ili Markdown tablicu

Statistika

Svako izvlačenje se uživo sažima: zbroj, prosjek, medijan, najniža i najviša vrijednost, standardna devijacija, plus koliko je rezultata parno, neparno ili prosto. Histogram prikazuje oblik distribucije, a hi-kvadrat test govori vam odgovaraju li rezultati stvarno uniformnoj distribuciji.

Povijest

Posljednjih 50 izvlačenja čuva se u vašem pregledniku, zajedno s postavkama koje su ih proizvele — jedan klik vraća bilo koje od njih. Konfiguracije koje često koristite možete spremiti kao imenovane predloške, a cijeli popis izvozi se u JSON datoteku koju možete uvesti na drugom uređaju. Ništa se ne pohranjuje nigdje osim u ovom pregledniku.

Tipkovnica

Pritisnite razmaknicu ili R za ponovno izvlačenje bez posezanja za mišem.

Brze postavke

PostavkaRasponBrojUpotreba
🎲 Kocka1–61Društvene igre, odlučivanje
🪙 Novčić0–11Glava ili pismo
🎰 Lutrija1–496Bez ponavljanja, sortirano, kao pravo izvlačenje
💯 1–1001–1001Postoci, A/B podjele
🔢 PIN0–94Četiri znamenke, ponavljanje dopušteno

Ponovljiva izvlačenja

Seed način postoji za trenutke kad „vjeruj mi, bilo je slučajno” nije dovoljno.

Odaberite seed oko kojeg se svi mogu unaprijed dogovoriti — datum, hashtag, zaključnu cijenu nečega javno dostupnog — i objavite ga prije izvlačenja. Svatko tada može upisati isti seed s istim postavkama i dobiti identičan rezultat. Time niste dokazali da su brojevi bili nepredvidivi; dokazali ste da niste ponavljali izvlačenje dok niste dobili odgovor koji vam odgovara.

Ovako se slučajnost čini ponovljivom i u poslu koji se mora moći provjeriti: plan uzorkovanja koji kolega može ponovno pokrenuti, skup testnih podataka koji ostaje stabilan kroz cijeli test suite, školska vježba u kojoj svaki učenik dobiva iste „slučajne” podatke.

Odabir distribucije

Uniformna daje svakom broju u rasponu istu šansu. To je ono što ljudi obično misle pod „slučajno”, i to je zadana postavka.

Ostale distribucije grupiraju rezultate oko neke vrijednosti, što je uobičajeno ponašanje veličina iz stvarnog svijeta:

  • Normalna (Gaussova) — visine, pogreške mjerenja, rezultati testova. Postavite prosjek i standardnu devijaciju.
  • Eksponencijalna — vremena čekanja između neovisnih događaja.
  • Poissonova — broj događaja u fiksnom intervalu: dolasci na sat, greške po seriji.
  • Trokutasta — kad znate minimum, maksimum i najvjerojatniju vrijednost, ali ništa više. Česta u procjenama projekata.
  • Binomna — broj uspjeha od fiksnog broja pokušaja pri fiksnoj vjerojatnosti.

Svaka distribucija je odsječena na vaš zadani raspon, tako da dugi Gaussov rep ne može izaći izvan vašeg minimuma i maksimuma.

Gdje se koriste slučajni brojevi

Igre i zabava

  • Društvene igre — bacanje kocke, redoslijed poteza
  • Stolne RPG igre4d6dl1 za atribute lika, 2d20kh1 za prednost (advantage)
  • Nagradne igre — odabir dobitnika, uz seed kako bi sudionici mogli provjeriti postupak
  • Kvizovi — nasumičan redoslijed pitanja

Statistika i znanost

  • Uzorkovanje — izvlačenje uzorka iz populacije bez ponavljanja
  • A/B testiranje — dodjeljivanje sudionika u skupine
  • Monte Carlo simulacija — procjena vjerojatnosti ponavljanjem
  • Bootstrapping — ponovno uzorkovanje radi procjene nesigurnosti

Razvoj softvera

  • Testni podaci — milijun vrijednosti, generiranih u pozadini kako bi stranica ostala responzivna
  • Fixtures — seed način, tako da neuspješan test uvijek propadne na isti način
  • Nasumični ID-jevi — s popunjavanjem, prefiksima ili predloškom
  • Testiranje opterećenja — identifikatori po predlošku poput user{n}@example.com

Stvarni naspram pseudonasumičnih brojeva

Math.random()crypto.getRandomValues()Seed način (xoshiro128**)
TipPseudonasumičanKriptografski siguranPseudonasumičan, determinističan
Izvor entropijeSjeme odabrano od strane engine-aSustavni CSPRNGVaš tekst seeda
Predvidljiv?PotencijalnoNeDa, po dizajnu
Ponovljiv?NeNeUvijek
Dobar za sigurnostNeDaNe
Dobar za statistikuOvisiDaDa
Dobar za provjerljiva izvlačenjaNeNeDa

Math.random() se u ovom alatu nigdje ne koristi.

Izvlačenja bez ponavljanja

Kad je uključena opcija Bez ponavljanja, svaki broj u rasponu pojavljuje se najviše jednom. Idealno za:

  • Nagradne igre — nitko ne može pobijediti dvaput
  • Permutacije — miješanje skupa elemenata
  • Bingo — izvlačenje brojeva koji ostaju izvučeni
  • Lutriju — šest različitih brojeva od 1 do 49

Izvlačenje koristi djelomično Fisher–Yates miješanje, pa je traženje 6 brojeva od milijun jednako brzo kao traženje 6 od 49 — nikad se ne petlja nadajući se izbjegavanju sudara. Ako zatražite više jedinstvenih brojeva nego što raspon može ponuditi, generator to javlja umjesto da se zamrzne.

Izvoz rezultata

Kopirajte brojeve kao obični tekst s razdjelnikom po želji, kao CSV za proračunsku tablicu, kao JSON za kod, ili kao Markdown tablicu za dokumentaciju. Vrlo velika izvlačenja u potpunosti ostaju u memoriji i kopiraju se u potpunosti, iako se na ekranu iscrtava samo prvih nekoliko tisuća.

Generiranje slučajnih brojeva u vlastitom kodu

JavaScript / TypeScript

// Cryptographically secure integer in [min, max], without modulo bias.
// The naive `value % range` favours low numbers when range does not
// divide 2**32 evenly - so we reject values in the uneven tail.
function randomInt(min, max) {
  const range = max - min + 1;
  const limit = Math.floor(0x100000000 / range) * range;
  const arr = new Uint32Array(1);
  let value;
  do {
    crypto.getRandomValues(arr);
    value = arr[0];
  } while (value >= limit);
  return min + (value % range);
}

Python

import random
import secrets

# Cryptographically secure, no modulo bias
n = secrets.randbelow(max - min + 1) + min

# Reproducible: the same seed always gives the same sequence
rng = random.Random('my-seed')
n = rng.randint(min, max)

# Without repetition
sample = random.sample(range(min, max + 1), count)

PHP

// Cryptographically secure (PHP 7+), no modulo bias
$n = random_int($min, $max);

// Reproducible
mt_srand(crc32('my-seed'));
$n = mt_rand($min, $max);

Često postavljana pitanja (FAQ)

Je li rezultat zaista slučajan? U sigurnom načinu, da. Dolazi iz crypto.getRandomValues(), kriptografski sigurnog generatora koji se napaja iz spremnika entropije vašeg operacijskog sustava. Rezultati su uniformno raspoređeni i nepredvidivi. Seed način je namjerno suprotan: ponovljiv je, i to mu je svrha.
Koliko brojeva mogu generirati odjednom? Do 1 000 000. Izvlačenja iznad 50 000 izračunavaju se u pozadinskom worker procesu kako bi stranica ostala responzivna, a na ekranu se prikazuje prvih 2 000 uz broj preostalih — kopiranje i dalje daje sve.
Mogu li generirati negativne brojeve? Da. Postavite negativan minimum. Radi cijeli raspon JavaScript brojeva, uključujući negativne rasponove na oba kraja.
Utječe li sortiranje na slučajnost? Ne. Brojevi se prvo izvlače, a zatim sortiraju. Sortiranje mijenja samo redoslijed u kojem ih vidite.
Hoće li isti seed sutra dati iste brojeve? Da, i to na bilo kojem drugom uređaju ili u bilo kojem drugom pregledniku. Seed generator je u potpunosti determinističan i ovisi isključivo o vašem seedu i postavkama.
Što mi govori test ravnomjernosti? Pokreće hi-kvadrat test koji uspoređuje koliko se puta svaki broj stvarno pojavio s koliko puta se trebao pojaviti. Ako statistika ostane ispod kritične vrijednosti, rezultati su u skladu s uniformnom distribucijom. Za smisleni rezultat potreban je razumno uzak raspon i dovoljno izvlačenja — barem pet po mogućoj vrijednosti.
Kako funkcioniraju težine? Zapišite ih kao parove number:weight, na primjer 1:5, 2:1, 3:1. Ovdje je 1 pet puta vjerojatnija od 2 ili 3. Brojevi koje ne navedete dobivaju težinu nula i nikad se ne izvlače.
Koji je zapis kockica podržan? 3d6 baca tri šesterostrane kockice. Dodajte modifikator s 3d6+2. Zadržite ili odbacite kockice s kh, kl, dh, dl — tako 2d20kh1 zadržava veći od dva d20 (prednost), a 4d6dl1 odbacuje najmanju od četiri d6.
Pohranjuje li se moja povijest negdje? Samo u ovom pregledniku, u lokalnoj pohrani. Nikad ne stiže na poslužitelj, nikad se ne sinkronizira s drugim uređajem i nestaje kad obrišete podatke stranice. Izvezite je u JSON ako je želite zadržati ili prenijeti.

Cijenio bih ako biste podijelili ove stranice s prijateljima, spremili ih u favorite ili linkali na njih. Hvala! 🙏