Akékoľvek číslo od 1 do 5. Generátor náhodných čísel

03.03.2020

Prezentovaný online generátor náhodných čísel funguje na báze generátora pseudonáhodných čísel s rovnomerným rozdelením zabudovaným v JavaScripte. Generujú sa celé čísla. Štandardne sa vypíše 10 náhodných čísel v rozsahu 100...999, pričom čísla sú oddelené medzerami.

Základné nastavenia generátora náhodných čísel:

  • Množstvo čísel
  • Rozsah čísel
  • Typ oddeľovača
  • Zapnutie/vypnutie funkcie odstraňovania opakovaní (duplikátov čísel)

Celkový počet je formálne obmedzený na 1000, maximálne 1 miliarda. Možnosti oddeľovačov: medzera, čiarka, bodkočiarka.

Teraz presne viete, kde a ako získať voľnú postupnosť náhodných čísel v danom rozsahu na internete.

Možnosti aplikácie pre generátor náhodných čísel

Generátor náhodných čísel (RNG v JS s jednotnou distribúciou) bude užitočný pre špecialistov SMM a majiteľov skupín a komunít na sociálnych sieťach Instagram, Facebook, VKontakte, Odnoklassniki na určenie víťazov lotérií, súťaží a žrebovaní cien.

Generátor náhodných čísel vám umožňuje žrebovať ceny medzi ľubovoľným počtom účastníkov so stanoveným počtom výhercov. Súťaže sa môžu konať bez repostov a komentárov - sami si nastavíte počet účastníkov a interval generovania náhodných čísel. Na tejto stránke môžete získať sadu náhodných čísel online a zadarmo a nemusíte si inštalovať žiadnu aplikáciu do smartfónu ani program na počítači.

Na simuláciu hodu mincou alebo kockou možno použiť aj online generátor náhodných čísel. Pre tieto prípady však máme samostatné špecializované služby.

Máme postupnosť čísel pozostávajúcu z prakticky nezávislých prvkov, ktoré sa riadia daným rozdelením. Spravidla rovnomerné rozdelenie.

Náhodné čísla môžete v Exceli generovať rôznymi spôsobmi a spôsobmi. Zoberme si len 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.

Vzorkovanie náhodných čísel pomocou RAND

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

Ak chcete napríklad vygenerovať náhodné reálne číslo v rozsahu od 1 do 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. Kliknite na bunku s náhodným číslom.
  2. Na paneli vzorcov vyberte vzorec.
  3. Stlačte F9. A VSTÚPIŤ.

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


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, ktorý generuje hodnotu 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 v krokoch po 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álneho rozdelenia

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

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

Cena produktu X je 100 rubľov. Celá vyrobená šarža má normálnu distribúciu. 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 boli v rozsahu pravdepodobnosti. Keďže pravdepodobnosť výroby produktu s nákladmi 100 rubľov je maximálna, vzorec ukazuje hodnoty blízke 100 častejšie ako ostatné.

Prejdime k vykresľovaniu grafu. 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 vieme vygenerovať diagram s normálnym rozdelením. Na osi hodnôt je počet premenných v intervale, na osi kategórie sú periódy.

Čísla nás obklopujú od narodenia a hrajú dôležitú úlohu v živote. Pre mnohých ľudí je samotná ich práca spojená s číslami, niektorí sa spoliehajú na šťastie, vypĺňajú losy číslami, iní im pripisujú až 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íťazov. 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 čísla pridelené). 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 náš náhodný číselník pomôže vyplniť váš žreb do lotérie.

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

Program s náhodnými číslami Funguje to 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.

Ak chcete vygenerovať číslo online, musíte:

  1. Vyberte rozsah, v ktorom chcete dosiahnuť výsledok. Možno chcete znížiť čísla do 10 alebo, povedzme, 10 000;
  2. Eliminujte opakovania – výberom tejto možnosti 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 vytvorí celý výsledok naraz a na tejto stránke si ho môžete pozrieť posúvaním poľa s číslami pomocou myši alebo touchpadu.

Teraz môžete použiť pripravené čísla tak, ako potrebujete. Z poľa s číslom môžete skopírovať výsledok a publikovať ho v skupine alebo poslať poštou. A aby výsledok nevzbudzoval žiadne pochybnosti, urobte snímku obrazovky tejto stránky, na ktorej budú jasne viditeľné parametre randomizéra čísel 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.

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

Veľmi ma fascinujú rôzne IT hádanky a úlohy a jednou z týchto úloh je aj generátor náhodných čísel. Vo svojom telegramovom kanáli zvyčajne analyzujem najrôznejšie hádanky a rôzne úlohy z rozhovorov. Problém generátora 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ého.

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

Generátor pseudoná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 sa používa na akumuláciu entropie a následné získanie počiatočnej hodnoty (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é semeno, a preto je jeho pseudonáhodnosť, zatiaľ čo generátor náhodných čísel vždy generuje náhodné číslo tak, že začína vysoko kvalitnou náhodnou premennou, ktorá sa získava 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 určitú 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 je proces získavania čísel výlučne z nejakého druhu šumu, schopnosť vypočítať, ktorá má tendenciu k nule. RNG má zároveň určité algoritmy na vyrovnávanie distribúcie.

Prichádzame s vlastným PRNG algoritmom

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ú sekvenciu zobrať a z čoho modul. Ak priamo z 0 na N a modul 2, 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 generuje sekvenciu 01010101010101... a ani ju nemožno nazvať pseudonáhodnou. Aby bol generátor náhodný, musí prejsť ďalším bitovým testom. Ale my 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ý, ale ideme správnym smerom.

Čo ak si vezmeme nejakú známu, ale 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ť s číslami Pi od neznámeho bodu. Príklad takéhoto algoritmu so sekvenciou založenou na PI a variabilným modulom:

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 číslic 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.

Získali sme 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ť čísel a aby sme zabezpečili, že sa postupnosť nebude zakaždým opakovať, 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)
Toto už vyzerá ako generátor pseudonáhodných čísel. A ten istý Math.random() je PRNG, o tom si povieme o niečo neskôr. Navyše zakaždým dostaneme iné prvé číslo.

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

Lineárne kongruentné PRNG

Lineárne kongruentné PRNG (LCPRNG) je bežnou metódou na generovanie pseudonáhodných čísel. Nie je kryptograficky silná. Táto metóda pozostáva z výpočtu č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. S rôznymi počiatočnými hodnotami 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; var semeno = 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 nie presne tento 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, tieto vlastnosti môžu byť plusom. 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é rozloženie významov a výkon! Bezpečné algoritmy sa nemôžu pochváliť rýchlosťou.

Ďalšou vlastnosťou je reprodukovateľnosť. Niektoré implementácie vám umožňujú zadať seed a to je veľmi užitočné, ak sa sekvencia musí opakovať. Reprodukcia je potrebná napríklad pri testoch. 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)); console.log(rvalue)
Ale na rozdiel od Math.random() PRNG 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 získanie prístupu k zdrojom entropie (mac adresa, CPU, teplota atď...).



Podobné články