Generator de numere de la 1 la 1000. Generator de numere aleatorii. Cum se generează un număr aleator: instrucțiuni

Avem o succesiune de numere, formată din elemente aproape independente care se supun unei distribuții date. De obicei distribuit uniform.

Puteți genera numere aleatorii în Excel în diferite moduri și moduri. Să aruncăm o privire la cele mai bune dintre ele.

Funcția numere aleatorii în Excel

  1. Funcția RAND returnează un număr real aleator distribuit uniform. Va fi mai mic de 1, mai mare sau egal cu 0.
  2. Funcția RANDBETWEEN returnează un număr întreg aleatoriu.

Să ne uităm la utilizarea lor cu exemple.

Selectarea numerelor aleatorii cu RAND

Această funcție nu necesită niciun argument (RAND()).

Pentru a genera un număr real aleatoriu între 1 și 5, de exemplu, utilizați următoarea formulă: =RAND()*(5-1)+1.

Numărul aleator returnat este distribuit uniform pe intervalul .

De fiecare dată când se calculează foaia de lucru sau se modifică valoarea din orice celulă din foaia de lucru, este returnat un nou număr aleatoriu. Dacă doriți să salvați populația generată, puteți înlocui formula cu valoarea acesteia.

  1. Facem clic pe o celulă cu un număr aleatoriu.
  2. Evidențiați formula în bara de formule.
  3. Apăsați F9. SI INTRA.

Să verificăm uniformitatea distribuției numere aleatorii din prima probă folosind o histogramă de distribuție.


Gama de valori verticale este frecvența. Orizontală - „buzunare”.



Funcția RANDBETWEEN

Sintaxa funcției RANDBETWEEN este (limită inferioară; limită superioară). Primul argument trebuie să fie mai mic decât al doilea. În caz contrar, funcția va genera o eroare. Se presupune că limitele sunt numere întregi. Formula elimină partea fracționată.

Un exemplu de utilizare a funcției:

Numere aleatorii cu precizie de 0,1 și 0,01:

Cum să faci un generator de numere aleatorii în Excel

Să facem un generator de numere aleatorii cu generarea unei valori dintr-un anumit interval. Folosim o formulă ca: =INDEX(A1:A10;INTEGER(RAND()*10)+1).

Să facem un generator de numere aleatorii în intervalul de la 0 la 100 cu un pas de 10.

Din lista de valori text, trebuie să selectați 2 aleatorii. Folosind funcția RAND, comparăm valorile textului din intervalul A1:A7 cu numere aleatorii.

Să folosim funcția INDEX pentru a selecta două valori ale text aleatoriu din lista originală.

Pentru a selecta o valoare aleatorie din listă, aplicați următoarea formulă: =INDEX(A1:A7,RANDBETWEEN(1,COUNT(A1:A7))).

Generator de numere aleatorii cu distribuție normală

Funcțiile RAND și RANDBETWEEN produc numere aleatoare cu o singură distribuție. Orice valoare cu aceeași probabilitate poate intra în limita inferioară a intervalului solicitat și în cea superioară. Se dovedește o răspândire uriașă față de valoarea țintă.

Distribuția normală înseamnă că majoritatea numerelor generate sunt aproape de țintă. Să corectăm formula RANDBETWEEN și să creăm o matrice de date cu o distribuție normală.

Costul mărfurilor X este de 100 de ruble. Întregul lot produs este supus unei distribuții normale. Variabila aleatoare urmează, de asemenea, o distribuție normală de probabilitate.

În astfel de condiții, valoarea medie a intervalului este de 100 de ruble. Să generăm o matrice și să construim un grafic cu o distribuție normală cu o abatere standard de 1,5 ruble.

Folosim funcția: =NORMINV(RAND();100;1.5).

Excel a calculat ce valori sunt în intervalul de probabilități. Deoarece probabilitatea de a produce un produs cu un cost de 100 de ruble este maximă, formula arată valori aproape de 100 mai des decât restul.

Să trecem la complot. Mai întâi trebuie să creați un tabel cu categorii. Pentru a face acest lucru, împărțim matricea în perioade:

Pe baza datelor obținute, putem forma o diagramă cu o distribuție normală. Axa valorii este numărul de variabile din interval, axa categoriilor sunt perioadele.

Numerele ne înconjoară încă de la naștere și joacă un rol important în viață. Pentru mulți oameni, munca în sine este legată de numere, cineva se bazează pe noroc, completând numere bilete la loterie, iar cineva le dă un sens complet mistic. Într-un fel sau altul, uneori nu ne putem descurca fără a folosi un program precum generator de numere aleatorii.

De exemplu, trebuie să organizați o tragere la sorți între abonații grupului dvs. Generatorul nostru online de numere aleatorii vă va ajuta să alegeți câștigătorii rapid și sincer. Trebuie doar să setați, de exemplu, numărul dorit de numere aleatorii (după numărul de câștigători) și intervalul maxim (după numărul de participanți, dacă li se atribuie numere). Frauda în acest caz este complet exclusă.

Acest program poate servi și ca generator de numere aleatorii pentru loto. De exemplu, ai cumpărat un bilet și vrei să te bazezi complet pe șansă și noroc în alegerea numerelor. Apoi, randomizatorul nostru de numere vă va ajuta să vă completați biletul de loterie.

Cum se generează un număr aleator: instrucțiuni

program cu numere aleatorii functioneaza foarte simplu. Nici măcar nu trebuie să îl descărcați pe computer - totul se face în fereastra browserului în care este deschisă această pagină. Numerele aleatoare sunt generate în funcție de numărul specificat de numere și intervalul lor - de la 0 la 999999999.

Pentru a genera un număr online, aveți nevoie de:

  1. Selectați intervalul în care doriți să obțineți rezultatul. Poate doriți să tăiați numerele până la 10 sau, să zicem, 10000;
  2. Exclude repetări - selectând acest articol, vei forța **randomizatorul de numere** să-ți ofere doar combinații unice într-un anumit interval;
  3. Selectați numărul de numere - de la 1 la 99999;
  4. Faceți clic pe butonul Generare numere.

Indiferent de câte numere doriți să obțineți ca rezultat, generatorul de numere prime va oferi întregul rezultat dintr-o dată și îl puteți vedea pe această pagină derulând câmpul cu numere folosind mouse-ul sau touchpad-ul.

Acum puteți utiliza numerele gata făcute așa cum aveți nevoie. Din câmpul de număr, puteți copia rezultatul pentru postare într-un grup sau e-mail. Și pentru ca nimeni să nu se îndoiască de rezultat, faceți o captură de ecran a acestei pagini, pe care parametrii randomizatorului de numere și rezultatele programului vor fi vizibili clar. Este imposibil să se schimbe numerele în teren, deci este exclusă posibilitatea manipulării. Sperăm că site-ul nostru web și generatorul de numere aleatorii v-au ajutat.

Pentru a genera numere aleatorii în intervalul de care aveți nevoie, cel mai bine este să utilizați Generatorul de numere aleatoare online. Prezența unui număr mare de opțiuni vă va permite să selectați numărul necesar de numere aleatorii, precum și să specificați valoarea finală și inițială.

Instrucțiuni pentru generatorul de numere online (randomizare):

În mod implicit, generatorul de numere aleatoare este introdus cu 1 număr. Dacă modificați setările aplicației, puteți genera simultan până la 250 de numere aleatorii. Mai întâi trebuie să setați intervalul. Valoarea maximă a unui număr este 9.999.999.999. Generatorul de numere aleatorii vă permite să ordonați numerele în ordine descrescătoare, crescătoare sau aleatorie.

Pentru a afișa rezultatul, puteți utiliza diferite separatoare: punct și virgulă, virgulă și spațiu. În plus, este posibilă repetarea. Opțiunea „Exclude repetări” vă va permite să scăpați de dublări. De asemenea, puteți trimite un link către calculele făcute prin messenger sau e-mail prin copierea „Link către rezultat”.

depus generator online numerele aleatoare funcționează pe baza unui generator de numere pseudo-aleatorie programatic încorporat în JavaScript cu o distribuție uniformă. Sunt generate numere întregi. În mod implicit, sunt afișate 10 numere aleatorii în intervalul 100...999, numerele sunt separate prin spații.

Setări de bază ale generatorului de numere aleatorii:

  • Cantitatea de numere
  • Interval de numere
  • Tip separator
  • Activați / dezactivați funcția de eliminare a repetărilor (duble de numere)

Numărul total este limitat oficial la 1000, numărul maxim este de 1 miliard. Opțiuni de separare: spațiu, virgulă, punct și virgulă.

Acum știți exact unde și cum să obțineți o secvență gratuită de numere aleatorii într-un anumit interval de pe Internet.

Cazuri de utilizare ale generatorului de numere aleatorii

Generatorul de numere aleatorii (RNG pe JS cu distribuție uniformă) va fi util pentru specialiștii SMM și proprietarii de grupuri și comunități din în rețelele sociale Instagram, Facebook, Vkontakte, Odnoklassniki pentru a determina câștigătorii loteriei, concursurilor și extragerii cu premii.

Generatorul de numere aleatorii vă permite să trageți premii între un număr arbitrar de participanți cu un anumit număr de câștigători. Concursurile pot fi organizate fără repostări și comentarii - dvs. setați singur numărul de participanți și intervalul de generare a numerelor aleatorii. Puteți obține un set de numere aleatorii online și gratuit pe acest site și nu este nevoie să instalați nicio aplicație pe smartphone sau program de pe computer.

De asemenea, un generator de numere aleatoare online poate fi folosit pentru a simula o aruncare de monede sau zaruri. Dar apropo, avem servicii specializate separate pentru aceste cazuri.

Te-ai întrebat vreodată cum funcționează Math.random()? Ce este un număr aleator și cum se obține? Și imaginați-vă o întrebare la un interviu - scrieți generatorul de numere aleatorii în câteva rânduri de cod. Și deci, ce este, un accident și este posibil să-l prezicem?

Sunt foarte fascinat de diverse puzzle-uri și puzzle-uri IT, iar generatorul de numere aleatorii este unul dintre astfel de puzzle-uri. De obicei, pe canalul meu de telegrame rezolv tot felul de puzzle-uri și diverse sarcini din interviuri. Problema generatorului de numere aleatoare a câștigat o mare popularitate și am vrut să o perpetuez în profunzimea uneia dintre sursele de informare autorizate - adică aici pe Habré.

Acest material va fi util tuturor acelor front-ender și dezvoltatori Node.js care sunt în fruntea tehnologiei și doresc să intre în proiectul/startup-ul blockchain, unde se pun întrebări despre securitate și criptografie, cel puțin la nivel de bază. chiar și de către dezvoltatorii front-end.

Generator de numere pseudoaleatoare și generator de numere aleatoare

Pentru a obține ceva aleatoriu, avem nevoie de o sursă de entropie, o sursă de un fel de haos din care vom folosi pentru a genera aleatorietatea.

Această sursă este folosită pentru a acumula entropia și apoi a obține din ea valoarea inițială (valoarea inițială, sămânță), care este necesară generatorilor de numere aleatoare (RNG) pentru a genera numere aleatoare.

Generatorul de numere pseudo-aleatoare folosește o singură valoare de bază, de unde pseudo-aleatoria sa, în timp ce Generatorul de numere aleatoare generează întotdeauna un număr aleatoriu, începând cu o valoare aleatoare de înaltă calitate, care este luată din diverse surse de entropie.

Entropia - este o măsură a dezordinei. Entropia informației este o măsură a incertitudinii sau impredictibilității informațiilor.
Se pare că pentru a crea o secvență pseudo-aleatorie, avem nevoie de un algoritm care va genera o secvență bazată pe o anumită formulă. Dar o astfel de succesiune poate fi prezisă. Totuși, să ne imaginăm cum am putea scrie propriul nostru generator de numere aleatoare dacă nu am avea Math.random()

PRNG are un algoritm care poate fi reprodus.
RNG -  obține numere complet din orice zgomot, abilitatea de a calcula care tinde spre zero. În același timp, RNG-ul are anumiți algoritmi de nivelare a distribuției.

Inventăm propriul algoritm PRNG

Generatorul de numere pseudoaleatoare (PRNG) este un algoritm care generează o secvență de numere ale căror elemente sunt aproape independente unele de altele și se supun unei distribuții date (de obicei uniformă).
Putem lua o succesiune de numere și putem lua din ele modulul numărului. Cel mai simplu exemplu care îmi vine în minte. Trebuie să ne gândim la ce secvență să luăm și modulul din ce. Dacă doar direct de la 0 la N și modulul 2, atunci obțineți un generator de 1 și 0:

Funcția* rand() ( const n = 100; const mod = 2; fie i = 0; în timp ce (adevărat) ( ​​yield i % mod; dacă (i++ > n) i = 0; ) ) fie i = 0; pentru (fie x din rand()) ( dacă (i++ > 100) break; console.log(x); )
Această funcție generează pentru noi secvența 01010101010101 ... și nici măcar nu poate fi numită pseudo-aleatorie. Pentru ca un generator să fie aleatoriu, trebuie să treacă testul pentru următorul bit. Dar noi nu avem o asemenea sarcină. Cu toate acestea, chiar și fără teste, putem prezice următoarea secvență, ceea ce înseamnă că un astfel de algoritm nu este potrivit în frunte, dar suntem în direcția corectă.

Dar dacă luăm o secvență binecunoscută, dar neliniară, de exemplu, numărul PI. Și ca valoare pentru modul, vom lua nu 2, ci altceva. Vă puteți gândi chiar la schimbarea valorii modulului. Secvența de cifre din Pi este considerată aleatorie. Generatorul poate funcționa folosind pi pornind de la un punct necunoscut. Un exemplu de astfel de algoritm, cu o secvență bazată pe PI și modificare de modulo:

Const vector = [...Math.PI.toFixed(48).replace(".","")]; funcția* rand() (pentru (fie i=3; i<1000; i++) { if (i >99) i = 2; pentru (fie n=0; n Dar în JS, numărul PI poate fi afișat doar până la 48 de caractere și nu mai mult. Prin urmare, este încă ușor să preziceți o astfel de secvență și fiecare rulare a unui astfel de generator va produce întotdeauna aceleași numere. Dar generatorul nostru a început deja să arate numere de la 0 la 9.

Avem un generator de numere de la 0 la 9, dar distribuția este foarte neuniformă și va genera aceeași secvență de fiecare dată.

Putem lua nu numărul Pi, ci timpul în reprezentare numerică și să considerăm acest număr ca o succesiune de cifre, iar pentru a preveni repetarea succesiunii de fiecare dată, o vom citi de la sfârșit. În total, algoritmul nostru pentru PRNG va arăta astfel:

Funcția* rand() (let newNumVector = () => [...(+new Date)+""].reverse(); let vector = newNumVector(); las i=2; while (true) ( ​​​​​dacă (i++ > 99) i = 2; fie n=-1; în timp ce (++n< vector.length) yield (vector[n] % i); vector = newNumVector(); } } // TEST: let i = 0; for (let x of rand()) { if (i++ >100) pauză; console.log(x) )
Acum arată ca un generator de numere pseudo-aleatoare. Și același Math.random() - este un PRNG, vom vorbi despre asta puțin mai târziu. Mai mult, de fiecare dată primul număr este diferit.

De fapt, pe aceste exemple simple, puteți înțelege cum funcționează generatoarele de numere aleatoare mai complexe.Și există chiar și algoritmi gata pregătiți. De exemplu, să analizăm unul dintre ele - acesta este PRNG congruent liniar (LCPRNG).

PRNG liniar congruent

Linear Congruential PRNG (LCPRNG) -  este o metodă comună pentru generarea numerelor pseudoaleatoare. Nu are putere criptografică. Această metodă constă în calcularea termenilor unei secvențe liniare recurente modulo un număr natural m dat printr-o formulă. Secvența rezultată depinde de alegerea numărului de pornire - i.e. sămânță. La sensuri diferite sămânța dă diferite secvențe de numere aleatorii. Un exemplu de implementare a unui astfel de algoritm în JavaScript:

Const a = 45; const c = 21; const m = 67; vas = 2; const rand = () => sămânță = (a * sămânță + c) % m; pentru(fie i=0; i<30; i++) console.log(rand())
Multe limbaje de programare folosesc LCPRNG (dar nu doar un astfel de algoritm (!).

După cum sa menționat mai sus, o astfel de secvență poate fi prezisă. Deci, de ce avem nevoie de PRNG? Dacă vorbim despre securitate, atunci PRNG este o problemă. Dacă vorbim despre alte sarcini, atunci aceste proprietăți  -  pot juca un plus. De exemplu, pentru diferite efecte speciale și animații grafice, poate fi necesar să apelați frecvent aleatoriu. Și aici distribuția valorilor și performanța sunt importante! Algoritmii de securitate nu se pot lăuda cu viteză.

O altă proprietate - reproductibilitate. Unele implementări vă permit să specificați o sămânță, ceea ce este foarte util dacă o secvență trebuie repetată. Reproducerea este necesară în teste, de exemplu. Și există multe alte lucruri care nu necesită un RNG securizat.

Cum funcționează Math.random().

Metoda Math.random() returnează un număr pseudo-aleatoriu în virgulă mobilă din intervalul = crypto.getRandomValues(new Uint8Array(1)); jurnalul consolei (valoarea r)
Dar, spre deosebire de PRNG Math.random(), această metodă necesită foarte mult resurse. Faptul este că acest generator folosește apeluri de sistem în sistemul de operare pentru a accesa sursele de entropie (adresă mac, CPU, temperatură etc...).