Skip to main content
🟢 Beginner

Random Number Generator

Generate random numbers within a range. Perfect for games, decisions, and statistics. Try this free online math calculator for instant, accurate results.

Co je náhodný generátor čísel?

Jedná se o nástroj nebo algoritmus, který produkuje čísla bez jakýchkoli patrných vzorců — každý výstup je statisticky nezávislý na předchozích výstupech, přičemž každá hodnota v rozsahu je stejně pravděpodobná. Náhodná čísla jsou zásadní pro statistiku, herní průmysl, kryptografii, vědecké simulace a počítačové programování.

Pravá náhodnost pochází z fyzických jevů, které jsou inherentně nepředvídatelné: radioaktivní rozpad, atmosférický šum, termální šum v elektronických obvodech nebo kvantové tunelování událostí. Hardwarové RNGs měří tyto jevy, aby produkovaly skutečně náhodné bitové proudy. Služby jako random.org sbírají atmosférický šum z přijímačů rádia, aby poskytovaly pravou náhodnost čísel.

Computerem generovaná náhodná čísla jsou technicky pseudonáhodná — jsou deterministické sekvence, které vypadají náhodně, ale jsou zcela určeny počátečním hodnotou nazývanou semenem. Pokud je stejný semenný počet použit, pseudonáhodný generátor čísel (PRNG) produkuje stejnou sekvenci. To je vlastně užitečné pro reprodukovatelnost vědeckých simulací: nastavte semenný počet, zaznamenejte ho a můžete reprodukovat výsledky později.

Jak fungují pseudonáhodné generátory čísel

Moderní PRNGs používají matematické algoritmy k generování sekvencí s vynikajícími statistickými vlastnostmi. Nejčastěji používaný algoritmus je Mersenne Twister (MT19937), vyvinutý Matsumoto a Nishimurou v roce 1997. Má periodu 2^19937 − 1 (číslo s téměř 6 000 čísly) před opakováním, splňuje všechny standardní statistické testy na náhodnost a je výchozím generátorem náhodných čísel v Pythonu, PHP, Ruby, R a mnoha dalších jazycích.

Novější algoritmy zahrnují xoshiro/xoroshiro (extremně rychlé, malé stavové) a PCG (Permuted Congruential Generator) (vynikající statistické kvality s malým stavem). Pro kryptografické aplikace jsou tyto standardní PRNGs nedostatečné — kryptograficky bezpečné PRNGs (CSPRNGs) jsou vyžadovány, protože standardní PRNGs lze předpovídat, pokud zná attacker dostatek výstupů.

Webové prohlížeče poskytuji přístup k CSPRNG prostřednictvím API crypto.getRandomValues(), které používá tento kalkulačka pro generování náhodných čísel. To je mnohem bezpečnější než Math.random(), který používá jednoduchý PRNG a neměl by být nikdy používán pro bezpečnostní aplikace.

AlgoritmusPeriodaRychlostKryptograficky bezpečný?Používán v
Math.random()závisí na implementaciVelmi rychlýNeWebový JavaScript (ne-kryptograficky bezpečný)
Mersenne Twister2^19937 − 1RychlýNePython, R, MATLAB
xoshiro256**2^256 − 1Velmi rychlýNeRust, .NET, Julia
PCG-642^128RychlýNeNumPy, mnoho jazyků
ChaCha20RychlýAnoLinux /dev/urandom, TLS
FortunaStředníAnomacOS, iOS, Windows

Obvyklé použití náhodných čísel

Hry a zábava: Hody kostek, míchání karet, procedurální generování úrovní, systémy losování zbraní, randomizace chování NPC. Celý zážitek z roguelike her (Nethack, Spelunky, Hades) závisí na vysoké kvalitě náhodnosti, která vypadá spravedlivě a nepředvídatelně.

Losování a dražby: Náhodné výběry pro ceny, soutěže, výběr porotců, drafty a jakékoli spravedlivé alokace omezeného zdroje mezi soutěžícími. Pravá náhodnost zajišťuje, že nebude žádný sklon.

Vědecké simulace (Monte Carlo metody): Náhodná čísla řídí Monte Carlo simulace, které používají opakované náhodné vzorkování k aproximaci složitých matematických výsledků. Příklady zahrnují odhad π, cenění finančních derivátů, modelování jaderných reakcí, předpovědi počasí a studium interakcí léků.

Statistika a výzkum: Náhodné výběry pro průzkumy, náhodné přiřazení v klinických studiích (randomizované kontrolované studie), generování bootstrapových vzorků pro konfidenční intervaly a křížové validace v strojovém učení vyžadují náhodná čísla.

Kryptografie a bezpečnost: Generování klíčů pro šifrování, generování tokenů pro session, CAPTCHA výzvy, jednorázové hesla (OTP/2FA), soli pro hashování hesel a nonce v kryptografických protokolech vyžadují vysokou kvalitu náhodnosti. Slabá náhodnost v kryptografických aplikacích může být katastrofální — vedla k reálným bezpečnostním porušením.

Programování počítačů: Generování testovacích dat, testování zatížení, fuzzing (nalezení chyb, které se dostávají náhodné vstupní hodnoty do softwaru), A/B testování přiřazení, algoritmy míchání (jako Spotifyova funkce "míchat") a simulace testování.

Spravedlnost a statistické očekávání

Pravděpodobnostní generátor náhodných čísel přiděluje každému hodnotě v rozsahu stejnou pravděpodobnost. Pro rozsah 1–6 (podobně jako kostka), by se měla každá čísla objevit přibližně 1/6 ≈ 16,67% času po mnoha rolích. Ale po krátkých bězích jsou odchylky normální a očekávané – to je to, co pravděpodobnost vlastně říká.

Zákon velkých čísel říká, že s rostoucím počtem pokusů se pozorované frekvence blíží teoretickým pravděpodobnostem. Roluje kostkou 12krát a můžete vidět {1,3,5,6,2,1,4,3,2,6,5,4} – přesně 2krát ne každá čísla. Roluje 60 000krát a uvidíte velmi blízko k 10 000 každého čísla. Tuto konvergenci zaručuje zákon, ale krátké vzory nejsou.

Iluze hazardní hry je chybné přesvědčení, že minulé výsledky ovlivňují budoucí výsledky v nezávislých náhodných událostech. Pět hlav v řadě neznamená, že je „důležité“. Každý vrh je nezávislý; mince nemá paměť. Stejně tak náhodný generátor čísel, který právě produkoval 7, není méně pravděpodobné, aby produkoval 7 znovu na další volání.

RozsahPravděpodobnost na hodnotuPředpokládaná frekvence (za 1000)Typické použití
1–250%500Simulace vrhu mincí
1–616,67%167Simulace vrhu kostkou
1–1010%100Selektace desítek
1–521,92%19Desetice karet
1–1001%10Percentil obecné použití
1–1 000 0000,0001%0,001Simulace losování

Náhodné číslo generování v vědě: Monte Carlo metody

Monte Carlo metody používají náhodné vzorkování k řešení problémů, které jsou analyticky obtížné nebo nemožné. Jmenují se podle monackého kasina (pro zjevné důvody), tyto metody přeměňují tvrdé deterministické problémy na pravděpodobnostní řešitelné pomocí simulace.

Odhad π: Náhodně generujte body v jednotkovém čtverci (x,y každý v [0,1]). Počítá, kolik z nich leží v jednotkovém kruhu (x² + y² ≤ 1). Podíl je π/4. S 1 milionem náhodnými body můžete odhadnout π na asi 3–4 desetinná místa. To není efektivní způsob výpočtu π, ale krásně demonstruje sílu náhodnosti.

Finanční modelování: Black-Scholesova cena opcí a Value at Risk výpočty simulují tisíce možných budoucích cenových cest pomocí náhodných čísel. Každá simulovaná cesta reprezentuje jednu možnou budoucnost. Rozdělení výsledků po milionech simulací dává pravděpodobnostní rozdělení portfolia návratů.

Lékařská vývoj: Monte Carlo simulace modelují interakce lékových molekul, předpovídají, jak pravděpodobné je, aby kandidátní lék se vázal na cílový protein. To snižuje počet laboratorních experimentů potřebných, ušetří miliardy dolarů v farmaceutickém vývoji.

Generování jedinečných náhodných čísel (Bez náhrady)

Někdy potřebujete náhodná čísla, která se neopakuje – například při promíchávání karet, při přiřazování účastníků do skupin nebo při výběru losovaných vítězů. To se nazývá sampling bez náhrady (proti samplingu s náhradou, kde se stejná hodnota může objevit vícekrát).

Standardní algoritmus pro to je Fisher-Yates shuffle (také známý jako Knuth shuffle). Pro pole o velikosti n: začněte od posledního prvku, vyměňte ho s náhodně vybraným prvkem z celého pole (včetně sebe), poté se přesuňte na druhý předposlední prvek, vyměňte ho s náhodným prvkem z těch zbývajících, a pokračujte. Výsledkem je rovnoměrně náhodná permutace v O(n) času.

Generujte k jedinečných náhodných čísel z rozsahu [min, max]: vytvořte pole všech hodnot v rozsahu, aplikujte Fisher-Yates, vezměte první k prvky. To zajišťuje, že každá kombinace k hodnot je stejně pravděpodobná – skutečně rovnoměrný vzorek bez náhrady.

Random Numbers v Průběhu Každodenních Rozhodování

Generátory náhodných čísel jsou překvapivě užitečné pro praktické každodenní rozhodnutí:

Rozhodování při rovnocenných možnostech: Když existují dvě rovnocenné možnosti, náhodné číslo může udělat rozhodnutí bez přemýšlení. Výzkum naznačuje, že když lidé příliš dlouho přemýšlí o skutečně ekvivalentních volbách, zavádějí zkreslení, která je méně šťastná s výsledkem, než kdyby si vybrali náhodně.

Plánování a rozvrh: Náhodné rotace rozvrhu zajišťují spravedlnost v čase. Kdo vybírá první v fantasy draftu, kdo dostane přednostní směnu, který téma se diskutuje první v schůzi — náhodné přidělování eliminuje favoritismus a vnímání nespravedlnosti.

Učení a praxe: Studenti používající flashcards profitují z náhodného pořadí — zabrání se učení „kontextových nápadů“ (znalost odpovědi na kartu 15, protože jste právě odpověděli na kartu 14). Náhodné rozmístění cvičných problémů je prokázaným způsobem (interleaved practice), který posiluje dlouhodobou retenci ve srovnání s blokovou praxí.

Inspirace k tvorbě: Tvorci používají náhodné slovní generátory, generátory promptů a náhodné nástroje omezení, aby překonali kreativní bloky. Náhodně uložená omezení často nutí nečekané a zajímavé kreativní řešení.

Nejčastější dotazy

Je tento generátor skutečně náhodný?

Užívá váš prohlížeč crypto.getRandomValues() API, což je kryptograficky bezpečný pseudonáhodný generátor čísel (CSPRNG). Pro hry, rozhodování, statistiky a losování je to nepostřehnutelně od skutečné náhodnosti. Pro absolutní skutečnou náhodnost (z fyzických jevů) použijte hardware RNG nebo služby jako random.org.

Můžu generovat náhodná čísla bez opakování?

Ano — to se nazývá vzorkování bez náhrady. Kalkulačka používá algoritmus Fisher-Yates shuffle: generujte všechny hodnoty v rozsahu, zamíchejte je náhodně, vrátíte první N. Tímto způsobem se každé číslo objeví nejvýše jednou a každá kombinace je stejně pravděpodobná.

Co je pravděpodobnost získání stejného čísla dvakrát?

S náhradou (standardní režim), pro rozsah N hodnot je pravděpodobnost získání stejného hodnoty při dvou po sobě jdoucích náhodných výběrech 1/N. Pro rozsah 1–100: 1% na páru. Při mnoha výběrech jsou opakování očekávaná a normální. Bez náhrad, jsou současná duplikace nemožná designem.

Můžu použít to pro výběr čísel v loterii?

Ano. Nastavte rozsah na odpovídající vaší loterii (například 1–49) a povolte "bez opakování" pro výběr jedinečných čísel. Každá kombinace je stejně pravděpodobná — žádná čísla nebo kombinace nejsou více nebo méně pravděpodobná k výhře. Loterie sama je náhodná, takže jakýkoli výběr je stejně platný.

Co je v náhodném generování čísel semínko?

Seznam je počáteční hodnota pro pseudonáhodný generátor čísel. Stejné semínko vždy produkuje stejnou sérii. To je užitečné pro reprodukovatelné simulace — nastavte semínko, spusťte simulaci, zaznamenejte semínko a můžete reprodukovat stejnou náhodnou sérii později pro ověřování nebo ladění.

Jak mám vybrat náhodný položku z seznamu?

Čísla položek označte 1 až N, pak generujte náhodné celé číslo od 1 do N. Související položka je vámi náhodným výběrem. Například, abyste náhodně vybrali z 7 členů týmu, generujte náhodné celé číslo od 1 do 7. Každý člen má stejnou pravděpodobnost výběru 1/7 ≈ 14,3 %.

Je Math.random() v JavaScriptu skutečně náhodný?

Ne. Math.random() je jednoduchý PRNG s žádnými zabezpečovacími zárukami. Je vhodný pro hry a nepodstatné aplikace, ale nikdy by se neměl používat pro kryptografické účely (generování klíčů, tokenů, hesel). Pro zabezpečené aplikace vždy použijte crypto.getRandomValues() nebo serverový CSPRNG.

Co je rozdíl mezi PRNG a CSPRNG?

PRNG (Pseudonáhodný Generátor Čísel) je deterministický a rychlý, ale předpovídatelný, pokud víte dostatek informací o jeho stavu. CSPRNG (Kryptograficky Bezpečný PRNG) přidává vlastnost, že výstupy jsou komputačně nepostřehnutelně od skutečné náhodnosti, i když pozorujete některé výstupy. CSPRNG je vyžadován pro hesla, klíče a tokeny.

Co je Monte Carlo simulace?

Monte Carlo simulace používá velké množství náhodných vzorků k odhadu složitých veličin. Příkladem je odhad π, když náhodně umisťujete body do čtverce s kruhem — poměr bodů uvnitř kruhu k celkovým bodům se blíží π/4. Monte Carlo metody se používají v financích, fyzice, inženýrství a statistice.

Můžou být náhodné generátory čísel zkreslené?

Špatná kvalita RNG může vykazovat zkreslení — některé hodnoty se objevují častěji než jiné, nebo jsou mezi sebou korelace. Kvalita se měří statistickými testy (NIST Test Suite, TestU01 BigCrush). Moderní algoritmy jako Mersenne Twister, PCG a xoshiro splňují všechny standardní testy a jsou bez zkreslení pro praktické účely.

Losování čísel v hrách a procedurální generace obsahu

Videohry jsou postaveny na náhodnosti. Od náhodného generování dlaždic v Minecraftu při vytváření světa až po míchání chování AI nepřátel, kvalitní náhodnost vytváří herní zážitky, které jsou hratelné a nepředvídatelné. Procedurální generace obsahu (PCG) používá náhodná čísla s matematickými omezeními k vytváření obsahu s minimální ruční prací — 18 kvintilionů planet v No Man's Sky byly všechny generovány procedurálně z náhodných semen.

Roguelike hry jako Nethack, Spelunky a Hades definují žánr prostřednictvím procedurální generace úrovní. Každá hra generuje jiný podzemní komplex, umístění nepřátel a distribuci předmětů. Hra zasídlí náhodnost tak, aby se hry cítily spravedlivé (RNG nedeciduje náhodně, že jste zemřeli hned) a zůstaly nepředvídatelné. Mnoho rogueliků zobrazuje semena, aby hráči mohli zahrát stejnou hru nebo sdílet zajímavá semena s ostatními.

Deskové hry používají fyzickou náhodnost (kostky, smíchány karty, rotace) po staletí. Digitální ekvivalenty musí emulovat tyto rozdělení přesně. Standardní hodu kostkou s šestí používá uniformní rozdělení mezi {1,2,3,4,5,6}. Vyber z smíchané desky používá náhodnou permutaci. Některé hry používají kostky s výhodou/nevýhodou (hod kousí více kostek, vezme nejvyšší) nebo kostky s výhodou/nevýhodou — vyžadují pečlivou statistickou konstrukci k dosažení požadovaných pravděpodobnostních rozdělení.

Generování jiných rozdělení z uniformních náhodných čísel

Nejčastěji se RNG produkuje čísla uniformně rozložená mezi 0 a 1 (nebo celá čísla v rozsahu). Často potřebujeme náhodná čísla, která následují jiná rozdělení — normální, exponentiální, Poisson, atd. Mohou být odvozena z uniformních náhodných čísel pomocí transformačních metod.

Transformace Box-Mullera generuje náhodná čísla normálně rozložená z dvou uniformních náhodných čísel U₁ a U₂: Z₁ = √(−2ln(U₁)) × cos(2πU₂) a Z₂ = √(−2ln(U₁)) × sin(2πU₂). Obě Z₁ a Z₂ následují standardní normální rozdělení N(0,1). Rozměry s Z × σ + μ dostanete N(μ,σ²).

Inverzní Transformační Metoda používá inverzní funkci kumulativní rozdělení funkce (CDF). Pro exponentiální rozdělení s rychlostí λ: X = −ln(1−U)/λ, kde U je uniformní v [0,1]. Tuto metodu lze použít pro jakékoli rozdělení s analyticky invertovatelnou CDF.

Statistické testy pro náhodnost

Jak ověřujeme, že náhodný generátor čísel je skutečně náhodný? Statistické testy zjišťují, zda se v sérii čísel vyskytují vzory, které by byly v truly náhodné sérii nepravděpodobné. NIST Statistické testovací sadu obsahuje 15 testů, které se používají k hodnocení RNGs pro kryptografické aplikace. Klíčové testy zahrnují:

Frekvenční test (Monobit): Zjišťuje, zda se v binární reprezentaci generovaných čísel vyskytují 0 a 1 s rovnoměrnou frekvencí. Biázní mince, která padne hlavou 60% času, by tento test selhala.

Test běhů: Zjišťuje počet po sobě jdoucích identických bitů (běhů). Mnoho dlouhých běhů stejného bitu naznačuje ne náhodný vzor. Truly náhodná sérii má předvídatelnou distribuci délky běhů.

Sériový test: Zjišťuje, zda se dvojice, trojice nebo čtveřice hodnot vyskytují s rovnoměrnou frekvencí. Pokud generátor produkuje sérii 1,2,3,4,5,6,1,2,3,4,5,6... splňuje frekvenční test, ale selhává sériový test — dvojice jsou ne náhodné.

Statistický testCo detekujeNIST Test Suite?
Frekvenční (Monobit)Ne rovná se frekvence 0/1Ano
Test běhůToo mnoho/few po sobě jdoucích identických hodnotAno
AutokorelaceValues korelované s předchozími hodnotamiAno
Chi-SquareNe-uniformní distribuceAno (frekvenční test)
Den narození RozestupToo-regular rozestupy mezi hodnotamiVia TestU01
DiehardMultiple vzory testůRozdílná sada testů

TestU01 "BigCrush" testovací sadu považujeme za nejpřísnější praktický test — běží 106 testů a odmítá mnoho algoritmů, které procházejí menším testovacími sadami. Moderní algoritmy jako PCG a xoshiro procházejí BigCrush; starší algoritmy jako lineární kongruenční generátor používaný v raných knihovnách C selhávají v několika testech a neměly by být používány pro kvalitní aplikace.

Použití tohoto náhodného generátoru čísel

Nastavte minimální a maximální hodnoty, aby definujete rozsah. Nastavte "kolik" na generování více čísel najednou. Povolte možnost "žádné opakování" pro generování seznamu jedinečných čísel (vybírání bez náhrady) — ideální pro losování v loterii, karta kreslení nebo přiřazení účastníků do skupin bez opakování. Generovaný seznam používá kryptografický náhodný API vašeho prohlížeče pro kvalitní výsledky vhodné pro jakékoli nebezpečnostní účely. Pro použití v loterii generujte čísla rovnající se požadovanému počtu výběrů v rámci vašeho loterijního rozsahu. Pro losování v dražbě přiřaďte pořadí čísel k vstupům a vyberte odpovídající číslo. Výsledky jsou generovány čerstvě každým kliknutím na tlačítko — předchozí výsledky nejsou uloženy nebo sledovány.