Čísla nás obklopujú od narodenia a hrajú dôležitú úlohu v živote. Pre mnohých ľudí je samotná práca spojená s číslami, niekto sa spolieha na šťastie, vypĺňanie losov číslami a niekto im dáva úplne mystický význam. Tak či onak, niekedy sa nezaobídeme bez použitia programu ako napr generátor náhodných čísel.

Napríklad musíte zorganizovať žrebovanie cien medzi predplatiteľmi vašej skupiny. Náš online generátor náhodných čísel vám pomôže rýchlo a čestne vybrať výhercov. Stačí si napríklad nastaviť požadovaný počet náhodných čísel (podľa počtu výhercov) a maximálny rozsah (podľa počtu účastníkov, ak sú im pridelené čísla). Podvod je v tomto prípade úplne vylúčený.

Tento program môže slúžiť aj ako generátor náhodných čísel pre lotto. Napríklad ste si kúpili tiket a pri výbere čísel sa chcete úplne spoľahnúť na náhodu a šťastie. Potom vám pomôže náš náhodný číselník vyplniť lístok do lotérie.

Ako vygenerovať náhodné číslo: návod

program s náhodnými číslami funguje veľmi jednoducho. Nemusíte si ho ani sťahovať do počítača – všetko sa deje v okne prehliadača, kde je táto stránka otvorená. Náhodné čísla sa generujú podľa zadaného počtu čísel a ich rozsahu - od 0 do 999999999.

Na vygenerovanie čísla online potrebujete:

  1. Vyberte rozsah, v ktorom chcete získať výsledok. Možno chcete znížiť čísla do 10 alebo, povedzme, 10 000;
  2. Vylúčiť opakovania – výberom tejto položky prinútite **náhodník čísel**, aby vám ponúkal iba jedinečné kombinácie v určitom rozsahu;
  3. Vyberte počet čísel - od 1 do 99999;
  4. Kliknite na tlačidlo Generovať čísla.

Bez ohľadu na to, koľko čísel chcete ako výsledok získať, generátor prvočísel dá celý výsledok naraz a na tejto stránke ho môžete vidieť posúvaním poľa s číslami pomocou myši alebo touchpadu.

Teraz môžete použiť hotové čísla tak, ako potrebujete. Z poľa čísla môžete skopírovať výsledok na odoslanie do skupiny alebo na odoslanie. A aby nikto nepochyboval o výsledku, urobte snímku obrazovky tejto stránky, na ktorej budú jasne viditeľné parametre číselného randomizéra a výsledky programu. Nie je možné meniť čísla v poli, takže možnosť manipulácie je vylúčená. Dúfame, že vám naša stránka a generátor náhodných čísel pomohli.

Pomôžte službe jedným kliknutím: Povedzte svojim priateľom o generátore!

Generátor čísel online jedným kliknutím

Generátor náhodných čísel, ktorý je uvedený na našej webovej stránke, je veľmi pohodlný. Môže sa napríklad použiť pri žrebovaní a lotériách na určenie víťaza. Víťazi sa určujú týmto spôsobom: program rozdáva jedno alebo viac čísel v akomkoľvek rozsahu, ktorý určíte. Manipulácia s výsledkami môže byť okamžite eliminovaná. A vďaka tomu je víťaz určený pri spravodlivom výbere.

Niekedy potrebujete získať určitý počet náhodných čísel naraz. Napríklad chcete vyplniť žreb „4 z 35“ a veriť v náhodu. Môžete si overiť: ak hodíte mincou 32-krát, aká je pravdepodobnosť, že vypadne 10 reverzov za sebou (hlavy a chvosty môžu byť priradené číslami 0 a 1)?

Online videonávod s náhodným číslom - randomizér

Náš generátor čísel sa veľmi ľahko používa. Nevyžaduje sťahovanie programu do počítača – dá sa použiť online. Ak chcete získať potrebné číslo, musíte nastaviť rozsah náhodných čísel, číslo a v prípade potreby aj oddeľovač čísel a vylúčiť opakovania.

Ak chcete generovať náhodné čísla v určitom frekvenčnom rozsahu:

  • Vyberte rozsah;
  • Zadajte počet náhodných čísel;
  • Funkcia "Oddeľovač čísel" slúži pre krásu a pohodlie ich zobrazenia;
  • V prípade potreby povoľte / zakážte opakovania začiarknutím;
  • Kliknite na tlačidlo "Generovať".

V dôsledku toho dostanete náhodné čísla v danom rozsahu. Výsledok generátora čísel je možné skopírovať alebo poslať na e-mail. Najlepšie by bolo urobiť snímku obrazovky alebo video tohto procesu generovania. Náš randomizér vyrieši akúkoľvek z vašich úloh!

Premýšľali ste niekedy, ako funguje Math.random()? Čo je náhodné číslo a ako sa získava? A predstavte si otázku na pohovore - napíšte svoj generátor náhodných čísel do niekoľkých riadkov kódu. A čo to teda je, nehoda a je možné ju predvídať?

Veľmi ma fascinujú rôzne IT hlavolamy a hlavolamy a medzi takéto hlavolamy patrí aj generátor náhodných čísel. Zvyčajne vo svojom telegramovom kanáli triedim najrôznejšie hádanky a rôzne úlohy z rozhovorov. Problém s generátorom náhodných čísel si získal veľkú obľubu a chcel som ho zvečniť v hĺbke jedného zo smerodajných zdrojov informácií - teda tu na Habré.

Tento materiál bude užitočný pre všetkých front-enderov a vývojárov Node.js, ktorí sú v popredí technológie a chcú sa dostať do blockchainového projektu / startupu, kde sa kladú otázky o bezpečnosti a kryptografii, aspoň na základnej úrovni. dokonca aj front-end vývojármi.

Pseudo generátor náhodných čísel a generátor náhodných čísel

Aby sme získali niečo náhodné, potrebujeme zdroj entropie, zdroj nejakého chaosu, z ktorého budeme generovať náhodnosť.

Tento zdroj slúži na akumuláciu entropie a následne z nej získavanie počiatočnej hodnoty (počiatočná hodnota, seed), ktorá je potrebná pre generátory náhodných čísel (RNG) na generovanie náhodných čísel.

Generátor pseudonáhodných čísel používa jedinú počiatočnú hodnotu, a preto je jeho pseudonáhodnosť, zatiaľ čo generátor náhodných čísel vždy generuje náhodné číslo, počnúc kvalitnou náhodnou hodnotou, ktorá je prevzatá z rôznych zdrojov entropie.

Entropia - je mierou neporiadku. Informačná entropia je mierou neistoty alebo nepredvídateľnosti informácií.
Ukazuje sa, že na vytvorenie pseudonáhodnej sekvencie potrebujeme algoritmus, ktorý vygeneruje nejakú sekvenciu na základe určitého vzorca. Ale takáto postupnosť sa dá predpovedať. Predstavme si však, ako by sme mohli napísať vlastný generátor náhodných čísel, keby sme nemali Math.random()

PRNG má nejaký algoritmus, ktorý je možné reprodukovať.
RNG -  získava čísla úplne z akéhokoľvek šumu, pričom schopnosť vypočítať má tendenciu k nule. RNG má zároveň určité algoritmy na vyrovnávanie distribúcie.

Vynájdenie nášho vlastného algoritmu PRNG

Generátor pseudonáhodných čísel (PRNG) je algoritmus, ktorý generuje postupnosť čísel, ktorých prvky sú na sebe takmer nezávislé a riadia sa daným rozdelením (zvyčajne rovnomerným).
Môžeme zobrať postupnosť nejakých čísel a zobrať z nich modul čísla. Najjednoduchší príklad, ktorý ma napadne. Musíme si premyslieť, akú postupnosť zobrať a z čoho modul. Ak len priamo z 0 na N a modul 2, potom dostanete generátor 1 a 0:

Funkcia* rand() ( const n = 100; const mod = 2; nech i = 0; while (true) ( ​​​​výnos i % mod; if (i++ > n) i = 0; ) ) nech i = 0; for (nech x z rand()) ( if (i++ > 100) break; console.log(x); )
Táto funkcia nám vygeneruje sekvenciu 01010101010101 ... a nedá sa to ani nazvať pseudonáhodná. Aby bol generátor náhodný, musí prejsť testom na ďalší bit. My však takúto úlohu nemáme. Napriek tomu aj bez akýchkoľvek testov vieme predpovedať ďalšiu postupnosť, čiže takýto algoritmus nie je vhodný do čela, ale ideme správnym smerom.

Ale čo keď si vezmeme nejakú známu, no nelineárnu postupnosť, napríklad číslo PI. A ako hodnotu pre modul vezmeme nie 2, ale niečo iné. Môžete dokonca premýšľať o meniacej sa hodnote modulu. Postupnosť číslic v Pi sa považuje za náhodnú. Generátor môže pracovať pomocou pi od nejakého neznámeho bodu. Príklad takéhoto algoritmu so sekvenciou založenou na PI a zmenou modulu:

Const vector = [...Math.PI.toFixed(48).replace(".","")]; function* rand() ( for (nech i=3; i<1000; i++) { if (i >99) i = 2; pre (nech n=0; n Ale v JS môže byť číslo PI zobrazené iba do 48 znakov a nie viac. Preto je stále ľahké predpovedať takúto postupnosť a každý chod takéhoto generátora bude vždy produkovať rovnaké čísla. Ale náš generátor už začal zobrazovať čísla od 0 do 9.

Máme generátor čísel od 0 do 9, ale rozdelenie je veľmi nerovnomerné a zakaždým vygeneruje rovnakú postupnosť.

Môžeme vziať nie číslo Pi, ale čas v číselnom vyjadrení a považovať toto číslo za postupnosť číslic, a aby sa sekvencia neopakovala zakaždým, budeme ju čítať od konca. Celkovo bude náš algoritmus pre naše PRNG vyzerať takto:

Funkcia* rand() ( nech newNumVector = () => [...(+nový dátum)+""].reverse(); nech vektor = newNumVector(); nech i=2; while (true) ( ak (i++ > 99) i = 2; nech n = -1; zatiaľ čo (++n< vector.length) yield (vector[n] % i); vector = newNumVector(); } } // TEST: let i = 0; for (let x of rand()) { if (i++ >100) prestávka; console.log(x) )
Teraz to vyzerá ako generátor pseudonáhodných čísel. A ten istý Math.random() - je PRNG, o tom si povieme trochu neskôr. Navyše, zakaždým je prvé číslo iné.

V skutočnosti na týchto jednoduchých príkladoch môžete pochopiť, ako fungujú zložitejšie generátory náhodných čísel. A dokonca existujú hotové algoritmy. Napríklad, analyzujme jeden z nich - toto je lineárny kongruentný PRNG (LCPRNG).

Lineárne kongruentné PRNG

Lineárne kongruenciálne PRNG (LCPRNG) -  je bežnou metódou na generovanie pseudonáhodných čísel. Nemá kryptografickú silu. Táto metóda spočíva vo výpočte členov lineárnej rekurentnej postupnosti modulo nejaké prirodzené číslo m dané vzorcom. Výsledná postupnosť závisí od voľby štartovného čísla - t.j. semeno. Pre rôzne hodnoty semien sa získajú rôzne sekvencie náhodných čísel. Príklad implementácie takéhoto algoritmu v JavaScripte:

Const a = 45; const c = 21; const m = 67; varseed = 2; const rand = () => semeno = (a * semeno + c) % m; for(nech i=0; i<30; i++) console.log(rand())
Mnoho programovacích jazykov používa LCPRNG (ale nielen takýto algoritmus (!).

Ako bolo uvedené vyššie, takáto sekvencia sa dá predpovedať. Prečo teda potrebujeme PRNG? Ak hovoríme o bezpečnosti, tak PRNG je problém. Ak hovoríme o iných úlohách, potom tieto vlastnosti  -  môžu hrať plus. Napríklad pre rôzne špeciálne efekty a grafické animácie možno budete musieť často volať náhodne. A tu je dôležité rozdelenie hodnôt a výkon! Bezpečnostné algoritmy sa nemôžu pochváliť rýchlosťou.

Ďalšia vlastnosť - reprodukovateľnosť. Niektoré implementácie vám umožňujú zadať seed, čo je veľmi užitočné, ak sa má sekvencia opakovať. Reprodukcia je nevyhnutná pri testoch napr. A existuje mnoho ďalších vecí, ktoré nevyžadujú bezpečný RNG.

Ako funguje Math.random().

Metóda Math.random() vracia pseudonáhodné číslo s pohyblivou rádovou čiarkou z rozsahu = crypto.getRandomValues(new Uint8Array(1)); denník konzoly (rvalue)
Ale na rozdiel od PRNG Math.random() je táto metóda veľmi náročná na zdroje. Faktom je, že tento generátor používa systémové volania v OS na prístup k zdrojom entropie (adresa maku, procesor, teplota atď...).

Na generovanie náhodných čísel v rozsahu, ktorý potrebujete, je najlepšie použiť online generátor náhodných čísel. Prítomnosť veľkého počtu možností vám umožní vybrať požadovaný počet náhodných čísel, ako aj určiť konečnú a počiatočnú hodnotu.

Návod na online generátor čísel (randomizér):

Štandardne sa generátor náhodných čísel zadáva s 1 číslom. Ak zmeníte nastavenia aplikácie, môžete súčasne vygenerovať až 250 náhodných čísel. Najprv musíte nastaviť rozsah. Maximálna hodnota čísla je 9 999 999 999. Generátor náhodných čísel umožňuje zoradiť čísla v zostupnom, vzostupnom alebo náhodnom poradí.

Na zobrazenie výsledku môžete použiť rôzne oddeľovače: bodkočiarku, čiarku a medzeru. Okrem toho je možné opakovanie. Možnosť „Vylúčiť opakovania“ vám umožní zbaviť sa duplikácií. Môžete tiež poslať odkaz na výpočty vykonané cez messenger alebo e-mail skopírovaním "Odkaz na výsledok".

Máme postupnosť čísel pozostávajúcu z takmer nezávislých prvkov, ktoré sa riadia daným rozdelením. Zvyčajne rovnomerne rozložené.

Náhodné čísla môžete v Exceli generovať rôznymi spôsobmi a spôsobmi. Poďme sa pozrieť na tie najlepšie z nich.

Funkcia náhodných čísel v Exceli

  1. Funkcia RAND vracia náhodné rovnomerne rozdelené reálne číslo. Bude menšia ako 1, väčšia alebo rovná 0.
  2. Funkcia RANDBETWEEN vracia náhodné celé číslo.

Pozrime sa na ich použitie s príkladmi.

Výber náhodných čísel pomocou RAND

Táto funkcia nevyžaduje žiadne argumenty (RAND()).

Ak chcete napríklad vygenerovať náhodné reálne číslo medzi 1 a 5, použite nasledujúci vzorec: =RAND()*(5-1)+1.

Vrátené náhodné číslo je rovnomerne rozdelené v rámci intervalu.

Zakaždým, keď sa vypočíta hárok alebo sa zmení hodnota v ktorejkoľvek bunke v hárku, vráti sa nové náhodné číslo. Ak chcete uložiť vygenerovanú populáciu, môžete vzorec nahradiť jeho hodnotou.

  1. Klikneme na bunku s náhodným číslom.
  2. Zvýraznite vzorec v riadku vzorcov.
  3. Stlačte F9. A VSTÚPIŤ.

Skontrolujme rovnomernosť rozdelenia náhodných čísel z prvej vzorky pomocou histogramu rozdelenia.


Rozsah vertikálnych hodnôt je frekvencia. Horizontálne - "vrecká".



Funkcia RANDBETWEEN

Syntax funkcie RANDBETWEEN je (dolná hranica; horná hranica). Prvý argument musí byť menší ako druhý. V opačnom prípade funkcia vyvolá chybu. Predpokladá sa, že hranice sú celé čísla. Vzorec zahodí zlomkovú časť.

Príklad použitia funkcie:

Náhodné čísla s presnosťou 0,1 a 0,01:

Ako vytvoriť generátor náhodných čísel v programe Excel

Urobme generátor náhodných čísel s generovaním hodnoty z určitého rozsahu. Používame vzorec ako: =INDEX(A1:A10;INTEGER(RAND()*10)+1).

Urobme generátor náhodných čísel v rozsahu od 0 do 100 s krokom 10.

Zo zoznamu textových hodnôt musíte vybrať 2 náhodné. Pomocou funkcie RAND porovnávame textové hodnoty v rozsahu A1:A7 s náhodnými číslami.

Pomocou funkcie INDEX vyberieme dve náhodné textové hodnoty z pôvodného zoznamu.

Ak chcete vybrať jednu náhodnú hodnotu zo zoznamu, použite nasledujúci vzorec: =INDEX(A1:A7,RANDBETWEEN(1,COUNT(A1:A7))).

Generátor náhodných čísel normálnej distribúcie

Funkcie RAND a RANDBETWEEN vytvárajú náhodné čísla s jedným rozdelením. Akákoľvek hodnota s rovnakou pravdepodobnosťou môže spadať do spodnej hranice požadovaného rozsahu a do hornej. Ukazuje sa obrovský rozptyl od cieľovej hodnoty.

Normálne rozdelenie znamená, že väčšina vygenerovaných čísel je blízko cieľa. Opravme vzorec RANDBETWEEN a vytvoríme dátové pole s normálnym rozdelením.

Cena tovaru X je 100 rubľov. Celá vyrobená šarža podlieha normálnej distribúcii. Náhodná premenná tiež sleduje normálne rozdelenie pravdepodobnosti.

Za takýchto podmienok je priemerná hodnota rozsahu 100 rubľov. Vygenerujme pole a zostavme graf s normálnym rozdelením so štandardnou odchýlkou ​​1,5 rubľov.

Použijeme funkciu: =NORMINV(RAND();100;1.5).

Excel vypočítal, ktoré hodnoty sú v rozsahu pravdepodobností. Keďže pravdepodobnosť výroby produktu s nákladmi 100 rubľov je maximálna, vzorec zobrazuje hodnoty blízke 100 častejšie ako zvyšok.

Prejdime k plánovaniu. Najprv musíte vytvoriť tabuľku s kategóriami. Aby sme to dosiahli, rozdelíme pole na obdobia:

Na základe získaných údajov môžeme zostaviť diagram s normálnym rozdelením. Na osi hodnôt je počet premenných v intervale, na osi kategórie sú periódy.