Generátor náhodných čísel online

Acrafto Team Matematika
Aktualizované
Rýchle predvoľby
Všetko beží vo vašom prehliadači. Žiadne číslo nikdy neopustí vaše zariadenie.

Ako funguje generátor náhodných čísel?

Generátor vám ponúka dva zdroje náhodnosti a vy si vyberiete ten, ktorý sa hodí na danú úlohu.

Bezpečné náhodné čísla čerpajú entropiu z vášho operačného systému cez Web Crypto API (crypto.getRandomValues()). Sú nepredvídateľné a neopakovateľné – správna voľba pre skutočné žrebovanie, pri ktorom nikto nesmie vopred uhádnuť výsledok.

Semienko (seed) premení ľubovoľný text, ktorý napíšete, na východiskový stav deterministického generátora (xoshiro128**). Rovnaké semienko vždy vytvorí rovnaké čísla, takže hocikto môže vaše žrebovanie zopakovať a overiť, že ste dostali presne to, čo tvrdíte.

Oboje prebieha výhradne vo vašom prehliadači. Žiadne číslo sa nikdy nedostane na server.

Žiadna modulo odchýlka

Väčšina jednoduchých generátorov mapuje náhodnú 32-bitovú hodnotu na váš rozsah pomocou value % range. Keď sa rozsah nedelí rovnomerne do 2³², najnižšie čísla vychádzajú o niečo častejšie ako ostatné. Pri tisícoch žrebovaní je to už merateľné.

Tento generátor namiesto toho používa rejection sampling (odmietacie vzorkovanie): hodnoty, ktoré by spadli do nerovnomerného zvyšku, sa zahodia a vylosujú znova. Každé číslo vo vašom rozsahu má úplne rovnakú šancu. Môžete si to overiť sami pomocou zabudovaného testu rovnomernosti.

Čo generátor dokáže

Rozsah

  • Minimum a maximum – ľubovoľný celočíselný alebo desatinný rozsah, vrátane záporných hodnôt
  • Počet čísel – od 1 až po 1 000 000 v jednom žrebovaní
  • Bez opakovania – každé číslo sa objaví najviac raz, tak ako pri skutočnom žrebovaní
  • Zoradenie – poradie žrebovania, vzostupne, alebo zostupne; zoradenie sa nikdy nedotýka náhodnosti
  • Krok – obmedzí výsledky na násobky zadanej hodnoty, takže vychádzajú len napríklad 0, 5, 10, 15
  • Vylúčené čísla – zoznam hodnôt, ktoré sa nikdy nesmú vylosovať

Režim

  • Zdroj náhodnosti – bezpečný (Web Crypto) alebo so semienkom (reprodukovateľný)
  • Semienko – ľubovoľný text; rovnaké semienko vždy zopakuje rovnaké žrebovanie
  • Rozdelenie – rovnomerné, normálne (Gaussovo), exponenciálne, Poissonovo, trojuholníkové, binomické
  • Váhy – vybraným číslam pridelíte vyššiu šancu, zapisujú sa ako number:weight
  • Kocková notácia3d6+2, d20, 2d20kh1 pre výhodu (advantage), 4d6dl1 pre generovanie vlastností postavy

Výstup

  • Oddeľovač – čiarka, medzera, bodkočiarka, tabulátor, nový riadok, alebo čokoľvek, čo napíšete
  • Číselná sústava – desiatková, dvojková, osmičková, šestnástková, alebo báza 36
  • Doplniť nulami – premení 7 na 007 pre čísla lístkov alebo ID
  • Predpona a prípona – obalí každé číslo pevným textom
  • Šablóna{n} je číslo, {i} jeho poradie, takže user{n} sa stane user42
  • Kopírovať ako – čistý text, CSV, JSON, alebo tabuľka v Markdowne

Štatistika

Každé žrebovanie sa naživo zhrnie: súčet, priemer, medián, najnižšia a najvyššia hodnota, smerodajná odchýlka, plus koľko výsledkov je párnych, nepárnych alebo prvočíselných. Histogram ukáže tvar rozdelenia a chí-kvadrát test povie, či výsledky naozaj zodpovedajú rovnomernému rozdeleniu.

História

Posledných 50 žrebovaní zostáva uložených vo vašom prehliadači spolu s nastaveniami, ktoré ich vytvorili – jedno kliknutie ktorékoľvek z nich obnoví. Často používané konfigurácie si môžete uložiť ako pomenované predvoľby a celý zoznam sa dá exportovať do súboru JSON a naimportovať na inom zariadení. Nič sa neukladá nikde inde než v tomto prehliadači.

Klávesnica

Stlačením medzerníka alebo klávesu R vylosujete znova bez toho, aby ste siahli po myši.

Rýchle predvoľby

PredvoľbaRozsahPočetPoužitie
🎲 Kocka1–61Spoločenské hry, rozhodovanie
🪙 Minca0–11Hlava alebo znak
🎰 Lotéria1–496Unikátne, zoradené, ako pri skutočnom žrebovaní
💯 1–1001–1001Percentá, rozdelenie A/B
🔢 PIN0–94Štyri číslice, opakovanie povolené

Reprodukovateľné žrebovania

Režim so semienkom existuje pre chvíle, keď „ver mi, bolo to náhodné” jednoducho nestačí.

Vyberte semienko, na ktorom sa vopred zhodnú všetci zúčastnení – dátum, hashtag, záverečný kurz niečoho verejne dostupného – a oznámte ho ešte pred žrebovaním. Hocikto potom môže zadať rovnaké semienko s rovnakými nastaveniami a dostane identický výsledok. Nedokázali ste, že čísla boli nepredvídateľné; dokázali ste, že ste ich neopakovali dovtedy, kým sa vám odpoveď nepáčila.

Rovnako sa takto robí náhodnosť opakovateľná pri práci, ktorú treba dať overiť: plán vzorkovania, ktorý môže kolega spustiť znova, sada testovacích dát, ktorá zostáva rovnaká naprieč testovacou sadou, alebo úloha do triedy, kde každý žiak dostane rovnaké „náhodné” dáta.

Výber rozdelenia

Rovnomerné (uniform) dáva každému číslu v rozsahu rovnakú šancu. Toto si väčšina ľudí predstaví pod pojmom náhodné a je to predvolená voľba.

Ostatné zhlukujú výsledky okolo určitej hodnoty, čo je to, čo väčšina veličín v reálnom svete robí:

  • Normálne (Gaussovo) – výšky, chyby merania, výsledky testov. Nastavíte priemer a smerodajnú odchýlku.
  • Exponenciálne – čakacie časy medzi nezávislými udalosťami.
  • Poissonovo – počty udalostí v pevnom intervale: príchody za hodinu, chyby na dávku.
  • Trojuholníkové – keď poznáte minimum, maximum a najpravdepodobnejšiu hodnotu, ale nič viac. Bežné v projektových odhadoch.
  • Binomické – počet úspechov z pevného počtu pokusov s pevnou pravdepodobnosťou.

Každé rozdelenie sa oreže na váš zadaný rozsah, takže dlhý chvost Gaussovej krivky nemôže preskočiť cez vaše minimum a maximum.

Kde sa náhodné čísla používajú

Hry a zábava

  • Spoločenské hry – hod kockou, poradie hráčov
  • Stolové RPG4d6dl1 pre vlastnosti postavy, 2d20kh1 pre výhodu (advantage)
  • Súťaže a darčeky – výber výhercu, so semienkom, aby si to účastníci mohli overiť
  • Kvízy – náhodné poradie otázok

Štatistika a veda

  • Vzorkovanie – výber vzorky z populácie bez opakovania
  • A/B testovanie – priraďovanie účastníkov do skupín
  • Simulácia Monte Carlo – odhad pravdepodobnosti opakovaním
  • Bootstrapping – opätovné vzorkovanie na odhad neistoty

Vývoj

  • Testovacie dáta – milión hodnôt, generovaných na pozadí, aby stránka zostala odozvná
  • Fixtures – so semienkom, aby padajúci test padal rovnako aj podruhýkrát
  • Náhodné ID – s doplnením nulami, predponou alebo šablónou
  • Záťažové testovanie – šablónové identifikátory ako user{n}@example.com

Skutočne náhodné vs. pseudonáhodné čísla

Math.random()crypto.getRandomValues()So semienkom (xoshiro128**)
TypPseudonáhodnéKryptograficky bezpečnéPseudonáhodné, deterministické
Zdroj entropieSeed zvolený enginomSystémový CSPRNGVáš text semienka
Predvídateľné?Potenciálne ánoNieÁno, zámerne
Opakovateľné?NieNieVždy
Vhodné pre bezpečnosťNieÁnoNie
Vhodné pre štatistikuZáležíÁnoÁno
Vhodné pre overiteľné žrebovaniaNieNieÁno

Math.random() sa v tomto nástroji nepoužíva nikde.

Žrebovania bez opakovania

Pri zapnutej voľbe Bez opakovania sa každé číslo v rozsahu objaví najviac raz. Ideálne pre:

  • Súťaže a darčeky – nikto nemôže vyhrať dvakrát
  • Permutácie – zamiešanie sady položiek
  • Bingo – volanie čísel, ktoré ostávajú zavolané
  • Lotériu – šesť rôznych čísel z rozsahu 1 až 49

Žrebovanie využíva čiastočný Fisher–Yatesov shuffle, takže požiadavka na 6 čísel z milióna je rovnako rýchla ako 6 čísel z 49 – nikdy sa nezacyklí v nádeji, že sa vyhne kolízii. Ak požiadate o viac unikátnych čísel, než koľko rozsah dokáže poskytnúť, generátor vás na to upozorní namiesto toho, aby zamrzol.

Export výsledkov

Čísla môžete skopírovať ako čistý text s ľubovoľným oddeľovačom, ako CSV pre tabuľkový procesor, ako JSON pre kód, alebo ako tabuľku v Markdowne pre dokumentáciu. Veľmi veľké žrebovania zostávajú celé v pamäti a kopírujú sa celé, aj keď sa na obrazovke vykreslí len prvých pár tisíc.

Generovanie náhodných čísel vo vlastnom kóde

JavaScript / TypeScript

// Kryptograficky bezpečné celé číslo v [min, max], bez modulo odchýlky.
// Naivné `value % range` zvýhodňuje nízke čísla, keď sa rozsah
// nedelí rovnomerne do 2**32 – preto zahadzujeme hodnoty z nerovnomerného zvyšku.
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

# Kryptograficky bezpečné, bez modulo odchýlky
n = secrets.randbelow(max - min + 1) + min

# Reprodukovateľné: rovnaké semienko vždy dá rovnakú postupnosť
rng = random.Random('my-seed')
n = rng.randint(min, max)

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

PHP

// Kryptograficky bezpečné (PHP 7+), bez modulo odchýlky
$n = random_int($min, $max);

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

Často kladené otázky (FAQ)

Je výsledok naozaj náhodný? V bezpečnom režime áno. Pochádza z crypto.getRandomValues(), kryptograficky bezpečného generátora napájaného entropiou operačného systému. Výsledky sú rovnomerne rozložené a nepredvídateľné. Režim so semienkom je zámerne opačný: je reprodukovateľný, o to v ňom ide.
Koľko čísel môžem vygenerovať naraz? Až 1 000 000. Žrebovania nad 50 000 sa počítajú v pozadí (background worker), aby stránka zostala odozvná, a na obrazovke sa zobrazí prvých 2 000 spolu s počtom zvyšných – kopírovanie vám aj tak dá úplne všetko.
Môžem generovať záporné čísla? Áno. Nastavte záporné minimum. Funguje celý rozsah čísel JavaScriptu, vrátane záporných rozsahov na oboch koncoch.
Ovplyvňuje zoradenie náhodnosť? Nie. Čísla sa najprv vylosujú a až potom zoradia. Zoradenie mení len poradie, v akom ich vidíte.
Dá rovnaké semienko rovnaké čísla aj zajtra? Áno, a to na akomkoľvek inom zariadení alebo v inom prehliadači. Generátor so semienkom je úplne deterministický a závisí len od vášho semienka a nastavení.
Čo mi hovorí test rovnomernosti? Spúšťa chí-kvadrát test, ktorý porovnáva, ako často sa jednotlivé čísla skutočne vylosovali s tým, ako často by sa mali losovať. Ak štatistika zostane pod kritickou hodnotou, výsledky sú v súlade s rovnomerným rozdelením. Na zmysluplný výsledok potrebuje primerane úzky rozsah a dostatok žrebovaní – aspoň päť na každú možnú hodnotu.
Ako fungujú váhy? Zapisujú sa ako dvojice number:weight, napríklad 1:5, 2:1, 3:1. Tu je číslo 1 päťkrát pravdepodobnejšie než 2 alebo 3. Čísla, ktoré neuvediete, majú váhu nula a nikdy sa nevylosujú.
Aká kocková notácia je podporovaná? 3d6 hodí tromi šesťstennými kockami. Modifikátor pridáte cez 3d6+2. Ponechanie alebo zahodenie kociek riešia kh, kl, dh, dl – takže 2d20kh1 ponechá vyšší z dvoch d20 (výhoda/advantage) a 4d6dl1 zahodí najnižšiu zo štyroch d6.
Ukladá sa moja história niekde? Len v tomto prehliadači, v local storage. Nikdy sa nedostane na server, nesynchronizuje sa na iné zariadenie a zmizne, keď vymažete dáta stránky. Ak si ju chcete uchovať alebo preniesť, exportujte ju do JSON.

Ocenil by som, keby ste tieto stránky zdieľali s priateľmi, uložili si ich do záložiek alebo na ne odkazovali. Ďakujem! 🙏