Generátor náhodných čísel
Rozdělení výsledků
Test rovnoměrnosti
Pro spuštění testu vylosujte více čísel v užším rozsahu.
Nedávná losování
Uložené předvolby
Jak generátor náhodných čísel funguje?
Generátor nabízí dva zdroje náhodnosti a vy si vyberete ten, který se hodí pro danou úlohu.
Zabezpečená náhoda čerpá entropii přímo z operačního systému přes Web Crypto API (crypto.getRandomValues()). Je nepředvídatelná a neopakovatelná – správná volba pro skutečné losování, kde nikdo nesmí být schopen výsledek dopředu odhadnout.
Seed (reprodukovatelný režim) promění libovolný text, který zadáte, na výchozí stav deterministického generátoru (xoshiro128**). Stejný seed vždy vygeneruje stejná čísla, takže kdokoli může vaše losování zopakovat a ověřit, že výsledek souhlasí.
Oba režimy běží výhradně ve vašem prohlížeči. Žádné číslo se nikdy neposílá na server.
Žádná modulo zkreslení
Většina jednoduchých generátorů mapuje náhodnou 32bitovou hodnotu na váš rozsah pomocí hodnota % rozsah. Pokud se rozsah nedělí rovnoměrně do 2³², nejnižší čísla vycházejí o něco častěji než ostatní. Při tisících losování je to měřitelné.
Tento generátor místo toho používá rejection sampling: hodnoty, které by spadly do nerovnoměrného zbytku, se zahodí a losují znovu. Každé číslo ve vašem rozsahu má naprosto stejnou šanci. Můžete si to sami ověřit vestavěným testem rovnoměrnosti.
Co generátor umí
Rozsah
- Minimum a maximum – libovolný celočíselný nebo desetinný rozsah, včetně záporných hodnot
- Počet čísel – od 1 až do 1 000 000 v jednom losování
- Bez opakování – každé číslo se objeví nejvýše jednou, tak jako u skutečného losování
- Řazení – pořadí losování, vzestupně nebo sestupně; řazení se náhodnosti nijak nedotýká
- Krok – omezte výsledky na násobky zadané hodnoty, takže vyjdou jen třeba 0, 5, 10, 15
- Vyloučená čísla – seznam hodnot, které se nikdy nesmí vylosovat
Režim
- Zdroj náhodnosti – zabezpečený (Web Crypto), nebo se seedem (reprodukovatelný)
- Seed – libovolný text; stejný seed vždy zopakuje stejné losování
- Rozdělení – rovnoměrné, normální (Gaussovo), exponenciální, Poissonovo, trojúhelníkové, binomické
- Váhy – dejte vybraným číslům vyšší šanci, zapsáno jako
číslo:váha - Kostková notace –
3d6+2,d20,2d20kh1pro výhodu,4d6dl1pro generování vlastností postavy
Výstup
- Oddělovač – čárka, mezera, středník, tabulátor, nový řádek, nebo cokoli zadáte
- Číselná soustava – desítková, dvojková, osmičková, šestnáctková, nebo báze 36
- Doplnění nulami – změňte 7 na 007 pro čísla vstupenek nebo ID
- Prefix a sufix – obalte každé číslo pevným textem
- Šablona –
{n}je číslo,{i}jeho pořadí, takžeuser{n}se změní nauser42 - Kopírovat jako – prostý text, CSV, JSON, nebo tabulka v Markdownu
Statistika
Každé losování je okamžitě shrnuto: součet, průměr, medián, nejnižší, nejvyšší hodnota, směrodatná odchylka a kolik výsledků je sudých, lichých nebo prvočíselných. Histogram ukazuje tvar rozdělení a chí-kvadrát test prozradí, zda výsledky skutečně odpovídají rovnoměrnému rozdělení.
Historie
Posledních 50 losování zůstává uloženo ve vašem prohlížeči i s nastavením, které je vytvořilo – jedním kliknutím obnovíte kterékoli z nich. Často používaná nastavení lze uložit jako pojmenované předvolby a celý soubor lze exportovat do JSON souboru a importovat na jiném zařízení. Nic se neukládá nikde jinde než v tomto prohlížeči.
Klávesnice
Stiskněte mezerník nebo R pro nové losování bez sahání po myši.
Rychlé předvolby
| Předvolba | Rozsah | Počet | Použití |
|---|---|---|---|
| 🎲 Kostka | 1–6 | 1 | Deskové hry, rozhodování |
| 🪙 Mince | 0–1 | 1 | Panna nebo orel |
| 🎰 Loterie | 1–49 | 6 | Unikátní, seřazené, jako u skutečného losování |
| 💯 1–100 | 1–100 | 1 | Procenta, A/B rozdělení |
| 🔢 PIN | 0–9 | 4 | Čtyři číslice, opakování povoleno |
Reprodukovatelná losování
Režim se seedem existuje pro chvíle, kdy „věřte mi, bylo to náhodné” nestačí.
Zvolte seed, na kterém se všichni předem dohodnou – datum, hashtag, závěrečný kurz něčeho veřejného – a oznamte ho před losováním. Kdokoli pak může zadat stejný seed se stejným nastavením a získat identický výsledek. Nedokázali jste, že čísla byla nepředvídatelná – dokázali jste, že jste neopakovali losování, dokud se vám výsledek nezalíbil.
Stejným způsobem se dá udělat náhodnost opakovatelnou v práci, kterou je třeba ověřit: plán vzorkování, který může kolega znovu spustit, sada testovacích dat, která zůstane stabilní napříč testovací sadou, nebo cvičení ve třídě, kde každý student dostane stejná „náhodná” data.
Výběr rozdělení
Rovnoměrné dává každému číslu v rozsahu stejnou šanci. Je to to, co lidé obvykle myslí pod pojmem „náhodné”, a je to výchozí volba.
Ostatní rozdělení soustřeďují výsledky kolem určité hodnoty, což odpovídá tomu, jak se chovají skutečné veličiny:
- Normální (Gaussovo) – výšky, chyby měření, výsledky testů. Nastavíte průměr a směrodatnou odchylku.
- Exponenciální – čekací doby mezi nezávislými událostmi.
- Poissonovo – počty událostí v pevném intervalu: příjezdy za hodinu, vady na dávku.
- Trojúhelníkové – když znáte minimum, maximum a nejpravděpodobnější hodnotu, ale nic víc. Časté u projektových odhadů.
- Binomické – počet úspěchů z pevného počtu pokusů při pevné pravděpodobnosti.
Každé rozdělení je oříznuté na váš zadaný rozsah, takže dlouhý Gaussův „ocas” nemůže uniknout mimo vaše minimum a maximum.
Kde se náhodná čísla využívají
Hry a zábava
- Deskové hry – hody kostkou, určení pořadí
- Stolní RPG –
4d6dl1pro vlastnosti postavy,2d20kh1pro výhodu - Slosování – výběr výherce, se seedem, aby si to účastníci mohli ověřit
- Kvízy – náhodné pořadí otázek
Statistika a věda
- Vzorkování – výběr vzorku z populace bez opakování
- A/B testování – přiřazování účastníků do skupin
- Simulace Monte Carlo – odhad pravděpodobnosti opakovaným pokusem
- Bootstrapping – resampling pro odhad nejistoty
Vývoj
- Testovací data – milion hodnot, generovaných na pozadí, aby stránka zůstala responzivní
- Fixtures – se seedem, aby padající test padal pokaždé stejně
- Náhodná ID – s doplněním, prefixy, nebo šablonou
- Zátěžové testování – identifikátory podle šablony, například
user{n}@example.com
Skutečně náhodná vs. pseudonáhodná čísla
Math.random() | crypto.getRandomValues() | Se seedem (xoshiro128**) | |
|---|---|---|---|
| Typ | Pseudonáhodné | Kryptograficky bezpečné | Pseudonáhodné, deterministické |
| Zdroj entropie | Seed zvolený enginem | Systémový CSPRNG | Váš seed text |
| Předvídatelné? | Potenciálně | Ne | Ano, záměrně |
| Opakovatelné? | Ne | Ne | Vždy |
| Vhodné pro bezpečnost | Ne | Ano | Ne |
| Vhodné pro statistiku | Záleží | Ano | Ano |
| Vhodné pro ověřitelná losování | Ne | Ne | Ano |
Math.random() se v tomto nástroji nikde nepoužívá.
Losování bez opakování
Při zapnutí volby Bez opakování se každé číslo v rozsahu objeví nejvýše jednou. Ideální pro:
- Slosování – nikdo nemůže vyhrát dvakrát
- Permutace – zamíchání sady prvků
- Bingo – vytahovaná čísla zůstávají vytažená
- Loterie – šest odlišných čísel z rozsahu 1 až 49
Losování používá částečné míchání typu Fisher–Yates, takže vytáhnout 6 čísel z milionu je stejně rychlé jako 6 z 49 – nikdy se neopakuje ve smyčce v naději, že se vyhne kolizi. Pokud požadujete více unikátních čísel, než rozsah nabízí, generátor to oznámí místo toho, aby se zasekl.
Export výsledků
Čísla zkopírujte jako prostý text s libovolným oddělovačem, jako CSV pro tabulkový procesor, jako JSON pro kód, nebo jako tabulku v Markdownu pro dokumentaci. I velmi velká losování zůstávají celá v paměti a kopírují se celá, přestože se na obrazovce vykreslí jen prvních pár tisíc.
Generování náhodných čísel ve vlastním kódu
JavaScript / TypeScript
// Kryptograficky bezpečné celé číslo v rozsahu [min, max], bez modulo zkreslení.
// Naivní `hodnota % rozsah` zvýhodňuje nízká čísla, pokud se rozsah
// nedělí rovnoměrně do 2**32 – proto zahazujeme hodnoty z nerovnoměrného zbytku.
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 zkreslení
n = secrets.randbelow(max - min + 1) + min
# Reprodukovatelné: stejný seed vždy vrátí stejnou posloupnost
rng = random.Random('my-seed')
n = rng.randint(min, max)
# Bez opakování
sample = random.sample(range(min, max + 1), count)
PHP
// Kryptograficky bezpečné (PHP 7+), bez modulo zkreslení
$n = random_int($min, $max);
// Reprodukovatelné
mt_srand(crc32('my-seed'));
$n = mt_rand($min, $max);
Časté otázky (FAQ)
Je výsledek opravdu náhodný?
V zabezpečeném režimu ano. Pochází zcrypto.getRandomValues(), kryptograficky bezpečného generátoru napájeného entropií operačního systému. Výsledky jsou rovnoměrně rozložené a nepředvídatelné. Režim se seedem je záměrně opačný: je reprodukovatelný, a to je jeho smysl.
Kolik čísel mohu vygenerovat najednou?
Až 1 000 000. Losování nad 50 000 se počítá na pozadí ve webovém workeru, aby stránka zůstala responzivní, a na obrazovce se zobrazí prvních 2 000 s počtem zbývajících – kopírování ale vždy obsahuje úplně všechno.Mohu generovat záporná čísla?
Ano. Nastavte záporné minimum. Funguje celý rozsah čísel JavaScriptu, včetně rozsahů, kde je záporné jak minimum, tak maximum.Ovlivňuje řazení náhodnost?
Ne. Čísla se nejprve vylosují a teprve poté seřadí. Řazení mění jen pořadí, ve kterém je vidíte.Vygeneruje stejný seed stejná čísla i zítra?
Ano, a to i na jiném zařízení nebo v jiném prohlížeči. Generátor se seedem je plně deterministický a závisí pouze na vašem seedu a nastavení.Co mi řekne test rovnoměrnosti?
Spustí chí-kvadrát test, který porovná, jak často se každé číslo skutečně vylosovalo, s tím, jak často by mělo. Pokud statistika zůstane pod kritickou hodnotou, výsledky odpovídají rovnoměrnému rozdělení. Test potřebuje přiměřeně úzký rozsah a dostatek losování – alespoň pět na každou možnou hodnotu – aby měl vypovídací hodnotu.Jak fungují váhy?
Zapište je jako dvojicečíslo:váha, například 1:5, 2:1, 3:1. Zde je 1 pětkrát pravděpodobnější než 2 nebo 3. Čísla, která neuvedete, mají váhu nula a nikdy se nevylosují.
Jaká kostková notace je podporovaná?
3d6 hodí třemi šestistěnnými kostkami. Modifikátor přidáte pomocí 3d6+2. Ponechání nebo zahození kostek zapíšete pomocí kh, kl, dh, dl – takže 2d20kh1 ponechá vyšší ze dvou k20 (výhoda) a 4d6dl1 zahodí nejnižší ze čtyř k6.