Online generátor náhodných čísel. Online generátory mien, hesiel a náhodných čísel

  • 24.06.2019

Čísla nás sprevádzajú všade – čísla domu a bytu, telefón, auto, pas, plastová karta, dátumy, heslá k e-mailom. Niektoré kombinácie čísel si vyberáme sami, no väčšinu z nich dostaneme náhodne. Bez toho, aby sme si to uvedomovali, používame každý deň náhodne generované čísla. Ak prídeme na PIN kódy, tak unikátne kódy pre kreditnú alebo mzdovú kartu generujú spoľahlivé systémy, ktoré vylučujú prístup k heslám. Generátory náhodných čísel poskytujú ochranu v oblastiach vyžadujúcich rýchlosť spracovania, bezpečnosť a nezávislé spracovanie.

Proces generovania pseudonáhodných čísel podlieha určitým zákonitostiam a používa sa už dlhú dobu napríklad pri lotériách. V nedávnej minulosti sa žrebovanie uskutočňovalo pomocou lotériových bubnov alebo žrebov. Teraz v mnohých krajinách sú výherné čísla štátnych lotérií presne určené súborom vygenerovaných náhodných čísel.

Výhody metódy

Generátor náhodných čísel je teda nezávislý moderný mechanizmus na náhodné určovanie kombinácií čísel. Jedinečnosť a dokonalosť tejto metódy spočíva v nemožnosti vonkajšieho zásahu do procesu. Generátor je súbor programov postavených napríklad na šumových diódach. Zariadenie generuje prúd náhodných zvukov, ktorých aktuálne hodnoty sa premieňajú na čísla a kombinácie foriem.

Generovanie čísel poskytuje okamžité výsledky – dokončenie kombinácie trvá niekoľko sekúnd. Ak hovoríme o lotériách, účastníci môžu okamžite zistiť, či sa číslo tiketu zhoduje s výherným. To umožňuje, aby sa žrebovanie konalo tak často, ako chcú účastníci. Hlavnou výhodou metódy je však jej nepredvídateľnosť a nemožnosť vypočítať algoritmus na výber čísel.

Ako sa generujú pseudonáhodné čísla

V skutočnosti náhodné čísla nie sú náhodné - séria začína daným číslom a je generovaná algoritmom. Generátor pseudonáhodných čísel (PRNG alebo PRNG - generátor pseudonáhodných čísel) je algoritmus, ktorý generuje postupnosť zdanlivo nesúvisiacich čísel, ktoré sú zvyčajne rovnomerne rozdelené. V informatike sa pseudonáhodné čísla používajú v mnohých aplikáciách: v kryptografii, simulácii, Monte Carlo atď. Kvalita výsledku závisí od vlastností PRNG.

Zdrojom generovania môže byť fyzický šum od kozmického žiarenia až po šum v rezistore, ale takéto zariadenia takmer nikdy nepoužívajú aplikácie na zabezpečenie siete. Kryptografické aplikácie používajú špeciálne algoritmy, ktoré generujú sekvencie, ktoré nemôžu byť štatisticky náhodné. Dobre zvolený algoritmus vám však umožňuje získať série čísel, ktoré prejdú väčšinou testov náhodnosti. Obdobie opakovania v takýchto sekvenciách je väčšie ako prevádzkový interval, z ktorého sú čísla prevzaté.

Mnoho moderných procesorov obsahuje PRNG, napríklad RdRand. Prípadne sa vytvárajú súbory náhodných čísel a uverejňujú sa v jednorazovom bloku (slovníku). Zdroj čísel je v tomto prípade obmedzený a neposkytuje úplnú bezpečnosť siete.

História PRNG

Za prototyp generátora náhodných čísel možno považovať stolovú hru Senet, ktorá bola rozšírená v starovekom Egypte v roku 3500 pred Kristom. Podľa podmienok sa zúčastnili dvaja hráči, ťahy sa určovali hodom štyroch plochých čierno-bielych palíc - boli podobné vtedajším PRNG. Paličky sa hádzali súčasne a počítali sa body: ak jeden vypadol bielou stranou, 1 bod a ďalší ťah, dva biele - dva body atď. Maximálne skóre päť bodov získal hráč, ktorý vyhodil štyri palice čiernou stranou.

Generátor ERNIE sa dnes v Spojenom kráľovstve používa v lotériách už mnoho rokov. Existujú dva hlavné spôsoby generovania výherných čísel: lineárna zhoda a aditívna zhoda. Tieto a ďalšie metódy sú založené na princípe náhodnosti výberu a sú poskytované softvérom, ktorý donekonečna produkuje čísla, ktorých postupnosť nie je možné uhádnuť.

PRNG funguje nepretržite napríklad vo výherných automatoch. Podľa zákonov USA je to požiadavka, ktorú musia dodržiavať všetci dodávatelia softvéru.


Všimnite si, že v ideálnom prípade by krivka hustoty distribúcie náhodných čísel vyzerala ako krivka znázornená na obr. 22.3. To znamená, že v ideálnom prípade každý interval obsahuje rovnaký počet bodov: N i = N/k , kde N- celkový počet bodov, k- počet intervalov, i= 1,…, k .

Ryža. 22.3. Frekvenčný diagram náhodných čísel,
teoreticky generovaný ideálnym generátorom

Malo by sa pamätať na to, že generovanie ľubovoľného náhodného čísla pozostáva z dvoch fáz:

  • generovanie normalizovaného náhodného čísla (t. j. rovnomerne rozdeleného od 0 do 1);
  • prevod normalizovaných náhodných čísel r i na náhodné čísla X i, ktoré sú distribuované podľa požadovaného užívateľského (ľubovoľného) distribučného zákona alebo v požadovanom intervale.

Generátory náhodných čísel sa delia na:

  • fyzické;
  • tabuľkový;
  • algoritmický.

Fyzický RNG

Príkladom fyzického RNG je: minca (hlavy - 1, chvosty - 0); kocky; bubon so šípkou rozdelený na sektory s číslami; hardvérový generátor šumu (HS), ktorý sa používa ako hlučné tepelné zariadenie, napríklad tranzistor (obr. 22.4-22.5).

Ryža. 22.4. Schéma hardvérovej metódy na generovanie náhodných čísel
Ryža. 22.5. Schéma získavania náhodných čísel hardvérovou metódou
Úloha „Generovanie náhodných čísel pomocou mince“

Pomocou mince vygenerujte náhodné 3-ciferné číslo rovnomerne rozdelené od 0 do 1. Presnosť sú tri desatinné miesta.

Prvý spôsob, ako vyriešiť problém
Hoďte mincou 9-krát, a ak sa minca dostane na chvost, zapíšte „0“, ak hlavy, potom „1“. Povedzme teda, že ako výsledok experimentu sme dostali náhodnú postupnosť 100110100.

Nakreslite interval od 0 do 1. Čítajte čísla v poradí zľava doprava, rozdeľte interval na polovicu a vyberte vždy jednu z častí nasledujúceho intervalu (ak vypadla 0, potom ľavú, ak klesla 1, potom ten pravý). Takto sa môžete dostať do akéhokoľvek bodu v intervale tak presne, ako chcete.

takze 1 : interval je polovičný - a, - je zvolená pravá polovica, interval je zúžený:. Ďalšie číslo, 0 : interval je polovičný - a, - je zvolená ľavá polovica, interval je zúžený:. Ďalšie číslo, 0 : interval je polovičný - a, - je zvolená ľavá polovica, interval je zúžený:. Ďalšie číslo, 1 : interval je polovičný - a, - je zvolená pravá polovica, interval je zúžený:.

Podmienkou presnosti úlohy bolo nájdené riešenie: je to ľubovoľné číslo z intervalu, napríklad 0,625.

V zásade, ak pristupujete striktne, tak v delení intervalov treba pokračovať, až kým sa ľavá a pravá hranica nájdeného intervalu nezhodujú navzájom až na tretie desatinné miesto. To znamená, že z hľadiska presnosti už nebude vygenerované číslo odlíšiteľné od žiadneho čísla z intervalu, v ktorom sa nachádza.

Druhý spôsob riešenia problému
Rozdeľme výslednú binárnu postupnosť 100110100 na triády: 100, 110, 100. Po prevode týchto binárnych čísel na desiatkové dostaneme: 4, 6, 4. Dosadením "0." v popredí dostaneme: 0,464. Touto metódou je možné získať iba čísla od 0,000 do 0,777 (keďže maximum, ktoré možno z troch binárnych číslic vyžmýkať, je 111 2 = 7 8) - to znamená, že tieto čísla sú v skutočnosti zastúpené v osmičkovej číselnej sústave. Na preklad osmičkovýčísla v desiatkový vykonáme zastúpenie:
0,464 8 = 4 · 8 –1 + 6 · 8 –2 + 4 · 8 –3 = 0,6015625 10 = 0,602 10.
Požadované číslo sa teda rovná: 0,602.

Tabuľkový RNG

Tabuľkové RNG používajú ako zdroj náhodných čísel špeciálne zostavené tabuľky obsahujúce overené nekorelované, teda na sebe nezávislé čísla. Tabuľka 22.1 ukazuje malý fragment takejto tabuľky. Prechádzaním tabuľky zľava doprava zhora nadol môžete získať rovnomerné rozloženie 0 až 1 náhodných čísel s požadovaným počtom desatinných miest (v našom príklade používame pre každé číslo tri desatinné miesta). Keďže čísla v tabuľke na sebe nezávisia, tabuľkou je možné prechádzať rôznymi spôsobmi, napríklad zhora nadol, sprava doľava, alebo povedzme vybrať čísla, ktoré sú na párnych pozíciách.

Tabuľka 22.1.
Náhodné čísla. rovnomerne
rozdelené od 0 do 1 náhodných čísel
Náhodné čísla Rovnomerne rozložené
od 0 do 1 náhodných čísel
9 2 9 2 0 4 2 6 0.929
9 5 7 3 4 9 0 3 0.204
5 9 1 6 6 5 7 6 0.269
… …

Výhodou tejto metódy je, že dáva skutočne náhodné čísla, keďže tabuľka obsahuje overené nekorelované čísla. Nevýhody metódy: na uloženie veľkého počtu číslic je potrebná veľká pamäť; veľké ťažkosti pri vytváraní a kontrole takýchto tabuliek, opakovania pri použití tabuľky už nezaručujú náhodnosť číselnej postupnosti, a teda spoľahlivosť výsledku.

Existuje tabuľka obsahujúca 500 úplne náhodne overených čísel (prevzatých z knihy I. G. Venetského, V. I. Venetskej „Základné matematické a štatistické pojmy a vzorce v ekonomickej analýze“).

Algoritmické RNG

Čísla vygenerované pomocou týchto RNG sú vždy pseudonáhodné (alebo kvázi náhodné), to znamená, že každé nasledujúce vygenerované číslo závisí od predchádzajúceho:

r i + 1 = f(r i) .

Postupnosti vytvorené z takýchto čísel tvoria slučky, to znamená, že nevyhnutne existuje cyklus, ktorý sa opakuje nekonečne veľakrát. Opakujúce sa cykly sa nazývajú periódy.

Výhodou dát RNG je rýchlosť; generátory prakticky nevyžadujú pamäťové zdroje, sú kompaktné. Nevýhody: čísla nemožno úplne nazvať náhodnými, pretože medzi nimi existuje závislosť, ako aj prítomnosť bodiek v postupnosti kvázi náhodných čísel.

Zvážte niekoľko algoritmických metód na získanie RNG:

  • metóda stredných štvorcov;
  • metóda stredných produktov;
  • spôsob miešania;
  • lineárna kongruentná metóda.

Metóda stredného štvorca

Existuje nejaké štvorciferné číslo R 0. Toto číslo sa odmocní a zapíše sa R 1. Ďalej od R 1 sa vezme stred (štyri stredné číslice) - nové náhodné číslo - a zapíše sa R 0. Potom sa postup opakuje (pozri obr. 22.6). Všimnite si, že v skutočnosti to nie je potrebné brať ako náhodné číslo ghij, a 0.ghij- s nulou a desatinnou čiarkou priradenou vľavo. Táto skutočnosť sa odráža ako na obr. 22.6 a v nasledujúcich podobných obrázkoch.

Ryža. 22.6. Schéma stredných štvorcov

Nevýhody metódy: 1) ak pri nejakej iterácii číslo R 0 sa rovná nule, potom generátor degeneruje, preto je dôležitá správna voľba počiatočnej hodnoty R 0; 2) generátor zopakuje sekvenciu M n kroky (v najlepšom prípade), kde n- kapacita číslic R 0 , M- základ číselnej sústavy.

Napríklad na obr. 22.6: ak číslo R 0 bude reprezentovaná v binárnom zápise, postupnosť pseudonáhodných čísel sa bude opakovať v 2 4 = 16 krokoch. Všimnite si, že opakovanie sekvencie môže nastať skôr, ak nie je správne zvolené počiatočné číslo.

Vyššie opísaná metóda bola navrhnutá Johnom von Neumannom a pochádza z roku 1946. Keďže sa táto metóda ukázala ako nespoľahlivá, rýchlo sa od nej upustilo.

Metóda stredných produktov

číslo R 0 sa vynásobí R 1 zo získaného výsledku R 2 vytiahnite stred R 2 * (toto je ďalšie náhodné číslo) a vynásobené R 1. Všetky nasledujúce náhodné čísla sa vypočítajú pomocou tejto schémy (pozri obr. 22.7).

Ryža. 22.7. Metóda stredných produktov

Metóda miešania

Metóda shuffle používa operácie na cyklické posúvanie obsahu bunky doľava a doprava. Myšlienka metódy je nasledovná. Nechajte bunku uložiť semeno R 0. Cyklickým posunutím obsahu bunky doľava o 1/4 dĺžky bunky dostaneme nové číslo R 0 *. Rovnako tak cyklické posúvanie obsahu bunky R 0 doprava o 1/4 dĺžky bunky, dostaneme druhé číslo R 0**. Súčet čísel R 0 * a R 0 ** dáva nové náhodné číslo R 1. Ďalej R 1 sa zapisuje R 0 a celá postupnosť operácií sa zopakuje (pozri obrázok 22.8).


Ryža. 22.8. Schéma spôsobu miešania

Upozorňujeme, že číslo vyplývajúce zo súčtu R 0 * a R 0 **, nemusí sa úplne zmestiť do bunky R 1. V tomto prípade by sa z prijatého čísla mali vyradiť ďalšie číslice. Vysvetlime to na obr. 22.8, kde sú všetky bunky reprezentované ôsmimi binárnymi číslicami. Nechať byť R 0 * = 10010001 2 = 145 10 , R 0 ** = 10100001 2 = 161 10 , potom R 0 * + R 0 ** = 100110010 2 = 306 10 ... Ako vidíte, číslo 306 zaberá 9 číslic (v binárnom číselnom systéme) a bunka R 1 (ako R 0) môže obsahovať maximálne 8 bitov. Preto pred zadaním hodnoty do R 1 je potrebné odstrániť jeden „extra“, bit úplne vľavo z čísla 306, v dôsledku čoho v R 1 nebude 306, ale 00110010 2 = 50 10. Všimnite si tiež, že v jazykoch, ako je Pascal, sa „skracovanie“ extra bitov pri pretečení bunky vykonáva automaticky v súlade so zadaným typom premennej.

Lineárna kongruentná metóda

Metóda lineárnej kongruencie je jedným z najjednoduchších a najčastejšie používaných postupov na simuláciu náhodných čísel. Táto metóda využíva mod ( X, r), ktorý vráti zvyšok prvého argumentu delený druhým. Každé nasledujúce náhodné číslo sa vypočíta na základe predchádzajúceho náhodného čísla pomocou nasledujúceho vzorca:

r i+ 1 = mod ( k · r i + b, M) .

Postupnosť náhodných čísel získaných pomocou tohto vzorca sa nazýva lineárna kongruentná postupnosť... Mnoho autorov nazýva lineárnu kongruentnú postupnosť pre b = 0 multiplikatívna metóda kongruencie, a o b ≠ 0 — zmiešaná kongruentná metóda.

Pre kvalitný generátor je potrebné zvoliť vhodné koeficienty. Je potrebné, aby číslo M bola dosť veľká, keďže obdobie nemôže mať viac M prvkov. Na druhej strane rozdelenie použité v tejto metóde je dosť pomalá operácia, takže by bolo logické, keby binárny počítač zvolil M = 2 N, pretože v tomto prípade sa nájdenie zvyšku delenia vo vnútri počítača zredukuje na binárnu logickú operáciu „AND“. Bežný je aj výber najväčšieho prvočísla M menej ako 2 N: v odbornej literatúre je dokázané, že v tomto prípade ide o najmenej významné bity výsledného náhodného čísla r i+ 1 sa správa rovnako náhodne ako staršie, čo má pozitívny vplyv na celú postupnosť náhodných čísel ako celok. Príkladom je jeden z Mersennove čísla rovná 2 31 - 1, a teda M= 2 31 - 1.

Jednou z požiadaviek na lineárne kongruentné postupnosti je čo najväčšia dĺžka periódy. Dĺžka obdobia závisí od hodnôt M , k a b... Veta, ktorú uvádzame nižšie, nám umožňuje určiť, či je možné dosiahnuť periódu maximálnej dĺžky pre konkrétne hodnoty M , k a b .

Veta... Lineárna kongruentná postupnosť definovaná číslami M , k , b a r 0, má obdobie dĺžky M vtedy a len vtedy, ak:

  • čísla b a M vzájomne jednoduché;
  • k- 1 násobok p pre každú jednoduchú pčo je deliteľ M ;
  • k- 1 násobok 4 ak M násobok 4.

Nakoniec na záver uvedieme niekoľko príkladov použitia lineárnej kongruenciálnej metódy na generovanie náhodných čísel.

Zistilo sa, že séria pseudonáhodných čísel vygenerovaných z údajov z príkladu 1 sa bude opakovať vždy M/ 4 čísla. číslo q sa nastavuje ľubovoľne pred začatím výpočtov, ale treba mať na pamäti, že séria pôsobí náhodným dojmom pre veľké k(čo znamená, že q). Výsledok sa môže mierne zlepšiť, ak b nepárne a k= 1 + 4 q - v tomto prípade sa riadok bude opakovať vždy Mčísla. Po dlhom hľadaní k výskumníci sa ustálili na hodnotách 69069 a 71365.

Generátor náhodných čísel s použitím údajov z príkladu 2 vytvorí náhodné neopakujúce sa čísla s bodkou 7 miliónov.

Multiplikatívna metóda na generovanie pseudonáhodných čísel bola navrhnutá D. H. Lehmerom v roku 1949.

Kontrola kvality generátora

Od kvality RNG závisí kvalita celého systému a presnosť výsledkov. Náhodná sekvencia generovaná RNG preto musí spĺňať množstvo kritérií.

Vykonávané kontroly sú dvoch typov:

  • kontroly rovnomernosti distribúcie;
  • kontroly štatistickej nezávislosti.

Kontroly rovnomernosti distribúcie

1) RNG by mal produkovať takmer nasledujúce hodnoty štatistických parametrov charakteristických pre jednotný náhodný zákon:

2) Test frekvencie

Frekvenčný test umožňuje zistiť, koľko čísel spadá do intervalu (m r – σ r ; m r + σ r) to je (0,5 - 0,2887; 0,5 + 0,2887) alebo v konečnom dôsledku (0,2113; 0,7887). Keďže 0,7887 - 0,2113 = 0,5774, dospejeme k záveru, že v dobrom RNG by do tohto intervalu malo spadať asi 57,7 % všetkých vypadnutých náhodných čísel (pozri obr. 22.9).

Ryža. 22.9. Frekvenčný diagram ideálneho RNG
v prípade kontroly na frekvenčný test

Taktiež je potrebné počítať s tým, že počet čísel, ktoré spadajú do intervalu (0; 0,5), by sa mal približne rovnať počtu čísel, ktoré spadajú do intervalu (0,5; 1).

3) Chí-kvadrát test

Chí-kvadrát test (χ 2 test) je jedným z najznámejších štatistických testov; je to hlavná metóda používaná v kombinácii s inými kritériami. Chí-kvadrát test navrhol v roku 1900 Karl Pearson. Jeho pozoruhodná práca je považovaná za základ modernej matematickej štatistiky.

V našom prípade nám chí-kvadrát test umožní zistiť, koľko je reálny RNG má blízko k štandardu RNG, teda či spĺňa požiadavku rovnomernej distribúcie alebo nie.

Frekvenčný diagram odkaz RNG je znázornené na obr. 22.10. Keďže distribučný zákon referenčného RNG je rovnomerný, (teoretická) pravdepodobnosť p i biť čísla v i interval (všetky tieto intervaly k) rovná sa p i = 1/k ... A teda v každom z k intervaly budú klesať hladká na p i · N čísla ( N je celkový počet vygenerovaných čísel).

Ryža. 22.10. Frekvenčný diagram referenčného RNG

Skutočný RNG bude produkovať čísla rozdelené (a nie nevyhnutne rovnomerne!) k intervaloch a každý interval bude zahŕňať n ičísla (v súč n 1 + n 2 + ... + n k = N ). Ako môžeme určiť, aký dobrý je testovaný RNG a ako blízko k referenčnému? Je celkom logické zvážiť štvorce rozdielov medzi prijatými číslami. n i a "odkaz" p i · N ... Pridajme ich a výsledkom bude:

χ 2 exp. = ( n 1 - p 1 · N) 2 + (n 2 - p 2 N) 2 + ... + ( n k – p k · N) 2 .

Z tohto vzorca vyplýva, že čím menší je rozdiel v každom z členov (a teda čím menšia je hodnota χ 2 exp.), tým silnejší je zákon rozdelenia náhodných čísel generovaných skutočným RNG.

V predchádzajúcom výraze je každému z výrazov priradená rovnaká váha (rovná sa 1), čo v skutočnosti nemusí zodpovedať skutočnosti; preto je pre štatistiku chí-kvadrát potrebné každú normalizovať i-tý člen delením podľa p i · N :

Nakoniec výsledný výraz napíšeme kompaktnejšie a zjednodušíme:

Získali sme hodnotu chí-kvadrát testu pre experimentálneúdajov.

Tabuľka 22.2 sú dané teoretické hodnoty chí-kvadrát ​​(teória χ 2), kde ν = N- 1 je počet stupňov voľnosti, p Je užívateľom definovaná úroveň spoľahlivosti, ktorá udáva, do akej miery má RNG spĺňať požiadavky rovnomernej distribúcie, resp p — toto je pravdepodobnosť, že experimentálna hodnota χ 2 exp. bude menšia ako tabuľková (teoretická) χ 2 teória. alebo jemu rovný.

Tabuľka 22.2.
Niekoľko percentuálnych bodov rozdelenia χ 2
p = 1 % p = 5 % p = 25 % p = 50 % p = 75 % p = 95 % p = 99 %
ν = 1 0.00016 0.00393 0.1015 0.4549 1.323 3.841 6.635
ν = 2 0.02010 0.1026 0.5754 1.386 2.773 5.991 9.210
ν = 3 0.1148 0.3518 1.213 2.366 4.108 7.815 11.34
ν = 4 0.2971 0.7107 1.923 3.357 5.385 9.488 13.28
ν = 5 0.5543 1.1455 2.675 4.351 6.626 11.07 15.09
ν = 6 0.8721 1.635 3.455 5.348 7.841 12.59 16.81
ν = 7 1.239 2.167 4.255 6.346 9.037 14.07 18.48
ν = 8 1.646 2.733 5.071 7.344 10.22 15.51 20.09
ν = 9 2.088 3.325 5.899 8.343 11.39 16.92 21.67
ν = 10 2.558 3.940 6.737 9.342 12.55 18.31 23.21
ν = 11 3.053 4.575 7.584 10.34 13.70 19.68 24.72
ν = 12 3.571 5.226 8.438 11.34 14.85 21.03 26.22
ν = 15 5.229 7.261 11.04 14.34 18.25 25.00 30.58
ν = 20 8.260 10.85 15.45 19.34 23.83 31.41 37.57
ν = 30 14.95 18.49 24.48 29.34 34.80 43.77 50.89
ν = 50 29.71 34.76 42.94 49.33 56.33 67.50 76.15
ν > 30 ν + sqrt (2 ν ) · X p+ 2/3 X 2 p- 2/3 + O(1/sqrt ( ν ))
X p = –2.33 –1,64 –0,674 0.00 0.674 1.64 2.33

Považované za prijateľné p od 10 % do 90 %.

Ak χ 2 exp. oveľa viac ako teória χ 2. (teda p- skvelé), potom generátor nevyhovuje požiadavka rovnomerného rozdelenia, pretože pozorované hodnoty n iísť príliš ďaleko od teórie p i · N a nemožno ho považovať za náhodný. Inými slovami, interval spoľahlivosti je taký veľký, že obmedzenia na čísla sa veľmi uvoľnia a požiadavky na čísla sú slabé. V tomto prípade bude pozorovaná veľmi veľká absolútna chyba.

Dokonca aj D. Knut vo svojej knihe „The Art of Programming“ poznamenal, že mať χ 2 exp. malý tiež vo všeobecnosti nie je dobrý, aj keď sa na prvý pohľad zdá byť z hľadiska uniformity úžasný. Skutočne si vezmite sériu čísel 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, ... - sú ideálne z hľadiska rovnomernosť a χ 2 exp. budú prakticky nulové, ale je nepravdepodobné, že by ste ich rozpoznali ako náhodné.

Ak χ 2 exp. oveľa menej ako teória χ 2. (teda p- málo), potom generátor nevyhovuje požiadavka náhodného rovnomerného rozdelenia, keďže pozorované hodnoty n i príliš blízko k teoretickému p i · N a nemožno ho považovať za náhodný.

Ale ak χ 2 exp. leží v určitom rozsahu, medzi dvoma hodnotami χ 2 teor. ktoré zodpovedajú napr. p= 25 % a p= 50%, potom môžeme predpokladať, že hodnoty náhodných čísel generovaných senzorom sú úplne náhodné.

Okrem toho treba mať na pamäti, že všetky hodnoty p i · N musí byť dostatočne veľká, napríklad viac ako 5 (zistené empiricky). Až potom (pri dostatočne veľkej štatistickej vzorke) možno experimentálne podmienky považovať za vyhovujúce.

Postup overovania je teda nasledujúci.

Štatistické testy nezávislosti

1) Skontrolujte frekvenciu výskytu číslic v sekvencii

Pozrime sa na príklad. Náhodné číslo 0,2463389991 pozostáva z číslic 2463389991 a číslo 0,5467766618 sa skladá z číslic 5467766618. Spojením postupností číslic dostaneme: 2463389966151877

Je jasné, že teoretická pravdepodobnosť p i výpadky i-tá číslica (od 0 do 9) je 0,1.

2) Kontrola vzhľadu sérií identických čísel

Označme podľa n L počet radov po sebe nasledujúcich číslic dĺžky L... Všetko treba kontrolovať L od 1 do m, kde m Je používateľom špecifikované číslo: maximálny počet vyskytujúcich sa identických číslic v rade.

V príklade „24633899915467766618“ boli nájdené 2 série dĺžky 2 (33 a 77), tj. n 2 = 2 a 2 séria 3 dlhá (999 a 666), tzn n 3 = 2 .

Pravdepodobnosť výskytu radu s dĺžkou L rovná sa: p L= 9 10 - L (teoretické). To znamená, že pravdepodobnosť série jedného znaku je: p 1 = 0,9 (teoretické). Pravdepodobnosť série dvoch znakov v dĺžke je: p 2 = 0,09 (teoretické). Pravdepodobnosť pruhu v dĺžke troch znakov je: p 3 = 0,009 (teoreticky).

Napríklad pravdepodobnosť série jedného znaku v dĺžke je p L= 0,9, keďže môže byť len jeden znak z 10 a celkovo je ich 9 (nula sa nepočíta). A pravdepodobnosť, že sa vyskytnú dva rovnaké symboly „XX“ za sebou, je 0,1 · 0,1 · 9, čiže pravdepodobnosť 0,1, že sa symbol „X“ objaví na prvej pozícii, sa vynásobí pravdepodobnosťou 0,1, že ten istý symbol sa objaví na druhej pozícii „X“ a vynásobí sa počtom takýchto kombinácií 9.

Frekvencia výskytu série sa vypočíta podľa predtým analyzovaného vzorca "chí-kvadrát" s použitím hodnôt p L .

Poznámka: Generátor je možné kontrolovať mnohokrát, kontroly však nie sú úplné a nezaručujú, že generátor vytvára náhodné čísla. Napríklad generátor vydávajúci sekvenciu 12345678912345 ... bude pri kontrolách považovaný za ideálny, čo samozrejme nie je úplne pravda.

Na záver poznamenávame, že tretia kapitola knihy Donalda E. Knutha „The Art of Programming“ (zväzok 2) je kompletne venovaná štúdiu náhodných čísel. Skúma rôzne metódy na generovanie náhodných čísel, štatistické kritériá náhodnosti a konverziu rovnomerne rozdelených náhodných čísel na iné typy náhodných premenných. Prezentácii tohto materiálu bolo venovaných viac ako dvesto strán.

Čo je náhodnosť v počítači? Ako prebieha generovanie náhodných čísel? V tomto článku sme sa pokúsili poskytnúť jednoduché odpovede na tieto otázky.

V softvéri a v technológii všeobecne existuje potreba reprodukovateľnej náhodnosti: čísla a obrázky, ktoré sa zdajú náhodné, sú v skutočnosti generované určitým algoritmom. Toto sa nazýva pseudonáhodnosť a my sa pozrieme na jednoduché spôsoby vytvárania pseudonáhodných čísel. Na konci článku sformulujeme jednoduchú vetu na vytváranie týchto zdanlivo náhodných čísel.

Určiť, čo presne je náhodné, môže byť dosť skľučujúca úloha. Existujú testy (napríklad Kolmogorovova zložitosť), ktoré vám môžu poskytnúť presné meranie náhodnosti sekvencie. Ale nebudeme sa obťažovať, ale jednoducho sa pokúsime vytvoriť postupnosť čísel, ktoré sa budú zdať navzájom nesúvisiace.

Často nepotrebujete len jedno číslo, ale niekoľko náhodných čísel generovaných priebežne. Preto vzhľadom na počiatočnú hodnotu musíme vytvoriť ďalšie náhodné čísla. Táto počiatočná hodnota sa nazýva semienko a uvidíme, ako to získať neskôr. Zatiaľ sa sústreďme na generovanie iných náhodných hodnôt.

Generovanie náhodných čísel zo semena

Jedným z prístupov môže byť použiť nejaký bláznivý matematický vzorec na semeno, potom ho skresliť tak, aby výstup vyzeral nepredvídateľne, a potom ho brať ako semienko pre ďalšiu iteráciu. Jedinou otázkou je, ako by táto funkcia skreslenia mala vyzerať.

Poďme experimentovať s touto myšlienkou a uvidíme, kam nás zavedie.

Funkcia skreslenia prevezme jednu hodnotu a vráti inú. Nazvime to R.

R (Vstup) -> Výstup

Ak je hodnota nášho semena 1, potom R vytvorí riadok 1, 2, 3, 4, ... Nevyzerá to vôbec náhodne, ale k tomu sa dostaneme. Teraz nechajte R pridať konštantu namiesto 1.

R(x) = x + c

Ak sa c rovná napríklad 7, potom dostaneme riadok 1, 8, 15, 22, ... Stále to nie je to isté. Je zrejmé, že nám chýba, aby sa čísla nielen zvyšovali, ale mali by byť rozptýlené v určitom rozsahu. Chceme, aby sa naša postupnosť vrátila na začiatok - kruh čísel!

Číselný kruh

Pozrime sa na ciferník: náš rad začína od 1 a pokračuje v kruhu až do 12. Ale keďže pracujeme s počítačom, nech je to 0 namiesto 12.

Teraz, počnúc 1, opäť pridáme 7. Pokrok! Vidíme, že po 12-tej sa náš rad začína opakovať, bez ohľadu na to, od ktorého dátumu začať.

Tu dostávame veľmi dôležitú vlastnosť: ak sa náš cyklus skladá z n prvkov, potom maximálny počet prvkov, ktoré môžeme získať, kým sa začnú opakovať, je n.

Teraz prepíšme funkciu R, aby vyhovovala našej logike. Dĺžku slučky môžete obmedziť pomocou operátora modulu alebo operátora modulu.

R(x) = (x + c) % m

R(x) = (x + c) % m

V tomto bode si môžete všimnúť, že niektoré čísla nie sú vhodné pre c. Ak c = 4 a začali by sme s 1, naša postupnosť by bola 1, 5, 9, 1, 5, 9, 1, 5, 9, ... čo nám samozrejme nevyhovuje, pretože táto postupnosť absolútne nie je náhodný. Ukazuje sa, že čísla, ktoré volíme pre dĺžku cyklu a dĺžku skoku, musia spolu špeciálne súvisieť.

Ak vyskúšate niekoľko rôznych hodnôt, môžete vidieť jednu vlastnosť: m a c by mali byť relatívne prvočíslo.

Doteraz sme robili „skákanie“ sčítaním, ale čo keby sme použili násobenie? Vynásobte NS konštantou a.

R(x) = (ax + c) % m

R(x) = (ax + c) % m

Vlastnosti, ktoré musí spĺňať, aby vytvoril úplný cyklus, sú o niečo špecifickejšie. Ak chcete vytvoriť správnu slučku:

  1. (a - 1) musí byť deliteľné všetkými prvočiniteľmi m
  2. (a - 1) musí byť deliteľné 4, ak m je deliteľné 4

Tieto vlastnosti spolu s pravidlom, že m a c musia byť koprimé, tvoria Hallovu-Dobellovu vetu. Nebudeme brať do úvahy jeho dôkaz, ale ak by ste vzali veľa rôznych hodnôt pre rôzne konštanty, mohli by ste dospieť k rovnakému záveru.

Výber semien

Teraz je čas hovoriť o zábavnej časti: výbere počiatočného semena. Mohli by sme z toho urobiť konštantu. To môže byť užitočné v prípadoch, keď potrebujete náhodné čísla, ale chcete, aby boli rovnaké pri každom spustení programu. Napríklad vytvorenie rovnakej mapy pre každú hru.

Ďalším spôsobom je získať seed z nového zdroja pri každom spustení programu, napríklad v systémových hodinách. To je užitočné, keď potrebujete celkové náhodné číslo, napríklad v programe hodu kockou.

Konečný výsledok

Keď funkciu aplikujeme na jej výsledok viackrát, dostaneme rekurentný vzťah. Napíšme náš vzorec pomocou rekurzie.

atď., a používajú ho majitelia účtov na prilákanie nového publika do komunity.

Výsledok takýchto žrebovaní často závisí od šťastia používateľa, keďže príjemca ceny je určený náhodne.

Na toto určenie organizátori žrebovaní takmer vždy využívajú online generátor náhodných čísel alebo vopred nainštalovaný, ktorý je distribuovaný zadarmo.

Voľba

Pomerne často môže byť ťažké vybrať si takýto generátor, pretože ich funkčnosť je úplne iná - pre niektorých je výrazne obmedzená, pre iných je dosť široká.

Realizuje sa pomerne veľké množstvo takýchto služieb, ale problém je v tom, že sa líšia rozsahom.

Mnohé sú napríklad svojou funkčnosťou viazané na konkrétnu sociálnu sieť (napríklad mnohé generátorové aplikácie fungujú len s odkazmi na túto sieť).

Väčšina jednoduchých generátorov jednoducho náhodne určí číslo v danom rozsahu.

To je výhodné, pretože nespája výsledok s konkrétnym príspevkom, čo znamená, že sa dá použiť pri hraní mimo sociálnej siete a v rôznych iných situáciách.

V skutočnosti nemajú žiadne iné uplatnenie.

Poradte! Pri výbere najvhodnejšieho generátora je dôležité zvážiť účel, na ktorý bude slúžiť.

technické údaje

Pre najrýchlejší proces výberu optimálnej online služby na generovanie náhodných čísel uvádza tabuľka nižšie hlavné technické charakteristiky a funkčnosť takýchto aplikácií.

Tabuľka 1. Funkcie fungovania online aplikácií na generovanie náhodného čísla
názov Sociálna sieť Viaceré výsledky Výber zo zoznamu čísel Online widget pre stránku Vyberte si z rozsahu Zakázať opakovania
RandStuff Áno Áno nie Áno nie
Cast Lots Oficiálna stránka alebo VKontakte nie nie Áno Áno Áno
Náhodné číslo Oficiálna stránka nie nie nie Áno Áno
Randomus Oficiálna stránka Áno nie nie Áno nie
Náhodné čísla Oficiálna stránka Áno nie nie nie nie

Všetky aplikácie uvedené v tabuľke sú podrobnejšie popísané nižšie.

RandStuff

Túto aplikáciu môžete použiť online kliknutím na odkaz na jej oficiálnu webovú stránku http://randstuff.ru/number/.

Toto je jednoduchý generátor náhodných čísel, vyznačuje sa rýchlym a stabilným výkonom.

Je úspešne implementovaná ako samostatná samostatná aplikácia na oficiálnej webovej stránke, ako aj ako aplikácia v.

Zvláštnosťou tejto služby je, že si môže vybrať náhodné číslo zo zadaného rozsahu aj zo špecifického zoznamu čísel, ktoré je možné špecifikovať na stránke.

  • Stabilná a rýchla práca;
  • Nedostatok priameho pripojenia k sociálnej sieti;
  • Môžete si vybrať jedno alebo niekoľko čísel;
  • Môžete si vybrať len z uvedených čísel.

Používateľské recenzie tejto aplikácie sú nasledovné: „Prostredníctvom tejto služby určujeme víťazov v skupinách VKontakte. Ďakujem "," Si najlepší "," Používam iba túto službu."

Cast Lots

Táto aplikácia je jednoduchý funkčný generátor implementovaný na oficiálnej webovej stránke vo forme aplikácie VKontakte.

K dispozícii je tiež miniaplikácia generátora na vloženie do vašej stránky.

Hlavným rozdielom od predchádzajúcej opísanej aplikácie je, že umožňuje zakázať opakovanie výsledku.

V mnohých skupinách alebo na verejných miestach sa často konajú rôzne lotérie, stávky atď sociálne siete, Instagram atď., a používajú ho majitelia účtov na prilákanie nového publika do komunity.

Výsledok takýchto žrebovaní často závisí od šťastia používateľa, keďže príjemca ceny je určený náhodne.

Na toto určenie organizátori žrebovaní takmer vždy využívajú online generátor náhodných čísel alebo vopred nainštalovaný, ktorý je distribuovaný zadarmo.

Voľba

Pomerne často môže byť ťažké vybrať si takýto generátor, pretože ich funkčnosť je úplne iná - pre niektorých je výrazne obmedzená, pre iných je dosť široká.

Realizuje sa pomerne veľké množstvo takýchto služieb, ale problém je v tom, že sa líšia rozsahom.

Mnohé sú napríklad svojou funkčnosťou viazané na konkrétnu sociálnu sieť (napríklad veľa aplikácií generátora na VKontakte pracuje iba s odkazmi z tejto sociálnej siete).

Väčšina jednoduchých generátorov jednoducho náhodne určí číslo v danom rozsahu.

To je výhodné, pretože nespája výsledok s konkrétnym príspevkom, čo znamená, že sa dá použiť pri hraní mimo sociálnej siete a v rôznych iných situáciách.

V skutočnosti nemajú žiadne iné uplatnenie.

<Рис. 1 Генератор>

Poradte! Pri výbere najvhodnejšieho generátora je dôležité zvážiť účel, na ktorý bude slúžiť.

technické údaje

Pre najrýchlejší proces výberu optimálnej online služby na generovanie náhodných čísel uvádza tabuľka nižšie hlavné technické charakteristiky a funkčnosť takýchto aplikácií.

Tabuľka 1. Funkcie fungovania online aplikácií na generovanie náhodného čísla
názov Sociálna sieť Viaceré výsledky Výber zo zoznamu čísel Online widget pre stránku Vyberte si z rozsahu Zakázať opakovania
RandStuff Áno Áno nie Áno nie
Cast Lots Oficiálna stránka alebo VKontakte nie nie Áno Áno Áno
Náhodné číslo Oficiálna stránka nie nie nie Áno Áno
Randomus Oficiálna stránka Áno nie nie Áno nie
Náhodné čísla Oficiálna stránka Áno nie nie nie nie

Všetky aplikácie uvedené v tabuľke sú podrobnejšie popísané nižšie.

<Рис. 2 Случайные числа>

RandStuff

<Рис. 3 RandStuff>

Túto aplikáciu môžete použiť online kliknutím na odkaz na jej oficiálnu webovú stránku http://randstuff.ru/number/.

Toto je jednoduchý generátor náhodných čísel, vyznačuje sa rýchlym a stabilným výkonom.

Úspešne sa implementuje ako samostatná samostatná aplikácia na oficiálnej webovej stránke, ako aj ako aplikácia na sociálnej sieti VKontakte.

Zvláštnosťou tejto služby je, že si môže vybrať náhodné číslo zo zadaného rozsahu aj zo špecifického zoznamu čísel, ktoré je možné špecifikovať na stránke.

výhody:

  • Stabilná a rýchla práca;
  • Nedostatok priameho pripojenia k sociálnej sieti;
  • Môžete si vybrať jedno alebo niekoľko čísel;
  • Môžete si vybrať len z uvedených čísel.

mínusy:

  • Neschopnosť držať kresbu VKontakte (vyžaduje si to samostatnú aplikáciu);
  • Aplikácie pre VKontakte sa nespúšťajú vo všetkých prehliadačoch;
  • Výsledok sa niekedy zdá predvídateľný, pretože sa používa iba jeden výpočtový algoritmus.

Používateľské recenzie tejto aplikácie sú nasledovné: „Prostredníctvom tejto služby určujeme víťazov v skupinách VKontakte. Ďakujem "," Si najlepší "," Používam iba túto službu."

Cast Lots

<Рис. 4 Cast Lots>

Táto aplikácia je jednoduchý funkčný generátor implementovaný na oficiálnej webovej stránke vo forme aplikácie VKontakte.

K dispozícii je tiež miniaplikácia generátora na vloženie do vašej stránky.

Hlavným rozdielom od predchádzajúcej opísanej aplikácie je, že umožňuje zakázať opakovanie výsledku.

To znamená, že pri vykonávaní niekoľkých generácií za sebou v jednej relácii sa číslo nebude opakovať.

  • Prítomnosť miniaplikácie na vloženie na webovú stránku alebo blog;
  • Schopnosť zakázať opakovanie výsledku;
  • Prítomnosť funkcie „ešte viac náhodnosti“, po aktivácii ktorej sa zmení algoritmus výberu.

Negatívne:

  • Nemožnosť určiť niekoľko výsledkov naraz;
  • Neschopnosť vybrať si z konkrétneho zoznamu čísel;
  • Ak chcete vybrať víťaza na verejnosti, musíte použiť samostatnú miniaplikáciu VKontakte.

Recenzie používateľov sú nasledovné: „Funguje to stabilne, je celkom pohodlné používať“, „Pohodlná funkčnosť“, „Používam iba túto službu“.

Náhodné číslo

<Рис. 5 Случайное число>

Táto služba sa nachádza na http: // random number.rf/.

Jednoduchý generátor s minimum funkcií a doplnkových funkcií.

Dokáže náhodne generovať čísla v danom rozsahu (maximálne od 1 do 99999).

Stránka nemá žiadnu grafickú úpravu, a preto sa stránka ľahko načítava.

Výsledok je možné skopírovať alebo stiahnuť stlačením jedného tlačidla.

Negatívne:

  • Nedostatok miniaplikácie pre VKontakte;
  • Neexistuje žiadna možnosť držať žrebov;
  • Neexistuje spôsob, ako vložiť výsledok do blogu alebo webovej stránky.

Tu je to, čo používatelia hovoria o tejto službe: "Nie je to zlý generátor, ale málo funkcií", "Veľmi málo funkcií", "Vhodné na rýchle generovanie čísla bez zbytočných nastavení."

Randomus

<Рис. 6 Рандомус>

Tento generátor náhodných čísel môžete použiť kliknutím na odkaz http://randomus.ru/.

Ďalší, dosť jednoduchý, ale funkčný generátor náhodných čísel.

Služba má dostatočnú funkcionalitu na určovanie náhodných čísel, nebude však vhodná na žrebovanie a iné zložitejšie procesy.

Negatívne:

  • Nemožnosť držania nákresov pre reposty príspevku atď.
  • Žiadna miniaplikácia VK alebo webové stránky;
  • Opakovanie výsledkov nemožno vypnúť.