Online generator nasumičnih 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 nasumičnih brojeva?

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

Sigurno nasumično crpi entropiju iz vašeg operativnog sistema putem Web Crypto API-ja (crypto.getRandomValues()). Nepredvidivo je i neponovljivo — ispravan izbor za stvarno izvlačenje gdje niko unaprijed ne smije moći pogoditi rezultat.

Sa seedom pretvara bilo koji tekst koji upišete u početno stanje deterministički generatora (xoshiro128**). Isti seed uvijek daje iste brojeve, tako da svako može ponoviti vaše izvlačenje i potvrditi da ste dobili ono što tvrdite.

Oboje se izvršava u potpunosti u vašem pregledniku. Nijedan broj nikada ne dospije na server.

Bez modulo pristrasnosti

Većina jednostavnih generatora mapira nasumičnu 32-bitnu vrijednost na vaš raspon pomoću value % range. Kada se raspon ne dijeli ravnomjerno u 2³², najniži brojevi se pojavljuju nešto češće od ostalih. Kroz hiljade izvlačenja to postaje mjerljivo.

Ovaj generator umjesto toga koristi rejection sampling: vrijednosti koje bi pale u neravnomjeran „rep“ se odbacuju i ponovo izvlače. Svaki broj u vašem rasponu ima potpuno istu šansu. To možete sami provjeriti ugrađenim testom ravnomjernosti.

Šta generator može

Raspon

  • Minimum i maksimum — bilo koji cijeli 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 kod stvarnog izvlačenja
  • Sortiranje — redoslijed izvlačenja, uzlazno ili silazno; sortiranje nikada ne dira slučajnost
  • Korak — ograniči rezultate na višekratnike vrijednosti, tako da se pojavljuju samo 0, 5, 10, 15
  • Isključi brojeve — navedite vrijednosti koje se nikada ne smiju izvući

Način rada

  • Izvor slučajnosti — sigurno (Web Crypto) ili sa seedom (reproducibilno)
  • 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 za kockice3d6+2, d20, 2d20kh1 za prednost (advantage), 4d6dl1 za bacanje statistika lika

Izlaz

  • Separator — zarez, razmak, tačka-zarez, tabulator, novi red, ili bilo šta što upišete
  • Brojevni sistem — decimalni, binarni, oktalni, heksadecimalni ili baza 36
  • Popuni nulama — pretvori 7 u 007 za brojeve ulaznica ili ID-jeva
  • Prefiks i sufiks — omotajte svaki broj fiksnim tekstom
  • Šablon{n} je broj, {i} njegova pozicija, tako user{n} postaje user42
  • Kopiraj kao — obični tekst, CSV, JSON ili Markdown tabelu

Statistika

Svako izvlačenje se uživo sažima: zbir, srednja vrijednost, medijana, najniža, najviša vrijednost, standardna devijacija, plus koliko je rezultata parno, neparno ili prosto. Histogram pokazuje oblik distribucije, a hi-kvadrat test pokazuje da li rezultati zaista odgovaraju uniformnoj distribuciji.

Historija

Posljednjih 50 izvlačenja se čuva u vašem pregledniku, zajedno s postavkama koje su ih proizvele — jedan klik vraća bilo koje od njih. Postavke koje često koristite mogu se sačuvati kao imenovani predlošci, a cijela zbirka se izvozi u JSON datoteku koju možete uvesti na drugom uređaju. Ništa se ne čuva nigdje osim u ovom pregledniku.

Tastatura

Pritisnite Space ili R da ponovo izvučete brojeve bez posezanja za mišem.

Brze postavke

PostavkaRasponBrojUpotreba
🎲 Kocka1–61Društvene igre, odlučivanje
🪙 Novčić0–11Glava ili pismo
🎰 Lutrija1–496Jedinstveni, sortirani brojevi, kao pravo izvlačenje
💯 1–1001–1001Procenti, A/B podjele
🔢 PIN0–94Četiri cifre, ponavljanje dozvoljeno

Reproducibilna izvlačenja

Način rada sa seedom postoji za trenutke kada „vjeruj mi, bilo je nasumično“ nije dovoljno.

Odaberite seed oko kojeg se svi mogu unaprijed usaglasiti — datum, hashtag, zatvornu cijenu nečeg javnog — i objavite ga prije izvlačenja. Svako 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 vam se odgovor nije svidio.

Ovo je i način da slučajnost učinite ponovljivom u radu koji se mora provjeriti: plan uzorkovanja koji kolega može ponovo pokrenuti, skup testnih podataka koji ostaje stabilan kroz cijeli testni paket, školska vježba u kojoj svaki učenik dobije iste „nasumične“ podatke.

Odabir distribucije

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

Ostale grupišu rezultate oko određene vrijednosti, što je ono što stvarne veličine obično rade:

  • Normalna (Gaussova) — visine, greške mjerenja, rezultati testova. Postavite srednju vrijednost i standardnu devijaciju.
  • Eksponencijalna — vremena čekanja između nezavisnih događaja.
  • Poissonova — broj događaja u fiksnom intervalu: dolasci po satu, defekti po seriji.
  • Trokutasta — kada znate minimum, maksimum i najvjerovatniju vrijednost, ali ništa drugo. Uobičajena u projektnim procjenama.
  • Binomna — broj uspjeha od fiksnog broja pokušaja pri fiksnoj vjerovatnoći.

Svaka distribucija je odsječena na raspon koji postavite, tako da dugi rep Gaussove krive ne može izaći van vašeg minimuma i maksimuma.

Gdje se koriste nasumični brojevi

Igre i zabava

  • Društvene igre — bacanje kocke, redoslijed poteza
  • Stolne RPG igre4d6dl1 za atribute lika, 2d20kh1 za prednost
  • Nagradne igre — biranje pobjednika, sa seedom kako bi učesnici mogli provjeriti
  • Kvizovi — nasumičan redoslijed pitanja

Statistika i nauka

  • Uzorkovanje — izvlačenje uzorka iz populacije bez ponavljanja
  • A/B testiranje — dodjeljivanje učesnika grupama
  • Monte Carlo simulacija — procjena vjerovatnoće ponavljanjem
  • Bootstrapping — ponovno uzorkovanje radi procjene neizvjesnosti

Razvoj softvera

  • Testni podaci — milion vrijednosti, generisan u pozadini kako bi stranica ostala odzivna
  • Fixtures — sa seedom, tako da neuspio test propadne na isti način dva puta
  • Nasumični ID-jevi — sa popunjavanjem, prefiksima ili šablonom
  • Testiranje opterećenja — identifikatori po šablonu poput user{n}@example.com

Stvarno nasumični vs. pseudo-nasumični brojevi

Math.random()crypto.getRandomValues()Sa seedom (xoshiro128**)
TipPseudo-nasumičnoKriptografski sigurnoPseudo-nasumično, deterministički
Izvor entropijeSeed odabran od strane enginaSistemski CSPRNGVaš tekst seeda
Predvidivo?PotencijalnoNeDa, po dizajnu
Ponovljivo?NeNeUvijek
Pogodno za sigurnostNeDaNe
Pogodno za statistikuZavisiDaDa
Pogodno za provjerljiva izvlačenjaNeNeDa

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

Izvlačenja bez ponavljanja

Kada je omogućeno Bez ponavljanja, svaki broj u rasponu se pojavljuje najviše jednom. Idealno za:

  • Nagradne igre — niko ne može pobijediti dvaput
  • Permutacije — miješanje skupa elemenata
  • Bingo — pozivanje brojeva koji ostaju pozvani
  • Lutrija — šest različitih brojeva od 1 do 49

Izvlačenje koristi djelomični Fisher–Yates shuffle, tako da je traženje 6 brojeva od milion jednako brzo kao traženje 6 od 49 — nikada ne kruži u nadi da će izbjeći koliziju. Ako tražite više jedinstvenih brojeva nego što raspon može ponuditi, generator vas na to upozorava umjesto da se zaglavi.

Izvoz rezultata

Kopirajte brojeve kao obični tekst s bilo kojim separatorom, kao CSV za tabelarni proračun, kao JSON za kod, ili kao Markdown tabelu za dokumentaciju. Vrlo velika izvlačenja ostaju u potpunosti u memoriji i kopiraju se u potpunosti, iako se na ekranu prikazuje samo prvih nekoliko hiljada.

Generisanje nasumičnih brojeva u vlastitom kodu

JavaScript / TypeScript

// Kriptografski siguran cijeli broj u rasponu [min, max], bez modulo pristrasnosti.
// Naivno `value % range` favorizuje niske brojeve kada se raspon ne dijeli
// ravnomjerno u 2**32 - zato odbacujemo vrijednosti u neravnomjernom repu.
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

# Kriptografski sigurno, bez modulo pristrasnosti
n = secrets.randbelow(max - min + 1) + min

# Reproducibilno: isti seed uvijek daje isti niz
rng = random.Random('my-seed')
n = rng.randint(min, max)

# Bez ponavljanja
sample = random.sample(range(min, max + 1), count)

PHP

// Kriptografski sigurno (PHP 7+), bez modulo pristrasnosti
$n = random_int($min, $max);

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

Često postavljana pitanja (FAQ)

Da li je rezultat zaista nasumičan? U sigurnom načinu rada, da. Dolazi iz crypto.getRandomValues(), kriptografski sigurnog generatora napajanog entropijom vašeg operativnog sistema. Rezultati su uniformno raspoređeni i nepredvidivi. Način rada sa seedom je namjerno suprotan: reproducibilan je, i to je suština.
Koliko brojeva mogu generisati odjednom? Do 1.000.000. Izvlačenja iznad 50.000 se izračunavaju u pozadinskom workeru kako bi stranica ostala odzivna, a ekran prikazuje prvih 2.000 uz broj preostalih — kopiranje i dalje daje potpuno sve.
Mogu li generisati negativne brojeve? Da. Postavite negativan minimum. Radi cijeli raspon JavaScript brojeva, uključujući negativne raspone na oba kraja.
Utiče li sortiranje na slučajnost? Ne. Brojevi se prvo izvlače, a potom sortiraju. Sortiranje mijenja samo redoslijed u kojem ih vidite.
Hoće li isti seed sutra dati iste brojeve? Da, i na bilo kojem drugom uređaju ili pregledniku. Generator sa seedom je potpuno deterministički i ne zavisi ni od čega osim vašeg seeda i postavki.
Šta mi govori test ravnomjernosti? Pokreće hi-kvadrat test koji upoređuje koliko se puta svaki broj zaista pojavio s koliko puta je trebao. Ako statistika ostane ispod kritične vrijednosti, rezultati su u skladu s uniformnom distribucijom. Potreban je razumno uzak raspon i dovoljno izvlačenja — najmanje pet po mogućoj vrijednosti — da bi rezultat imao smisla.
Kako funkcionišu težine? Zapišite ih kao parove number:weight, na primjer 1:5, 2:1, 3:1. Ovdje je 1 pet puta vjerovatnije od 2 ili 3. Brojevi koje ne navedete dobijaju težinu nula i nikada se ne izvlače.
Koji je zapis za kockice podržan? 3d6 baca tri šestostrane kockice. Dodajte modifikator sa 3d6+2. Zadržite ili odbacite kockice pomoću kh, kl, dh, dl — tako 2d20kh1 zadržava veći od dva d20 (prednost), a 4d6dl1 odbacuje najmanji od četiri d6.
Da li se moja historija negdje čuva? Samo u ovom pregledniku, u lokalnom skladištu. Nikada ne dospijeva na server, ne sinhronizuje se s drugim uređajem i nestaje ako obrišete podatke stranice. Izvezite je u JSON ako je želite sačuvati ili prenijeti.

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