Atsitiktinė generacija. „Excel“ atsitiktinių skaičių generatorius funkcijų ir duomenų analizėje

Aiškus ir patogus internetinis numerių generatorius, kuris naudojamas Pastaruoju metu populiarumą. Didžiausio pasiskirstymo sulaukė traukiant prizus socialiniuose tinkluose tarp vartotojų.

Jis taip pat populiarus kitose srityse. Taip pat turime arba slaptažodžius ir numerius.

Mūsų internetinis atsitiktinių skaičių generatorius.

Mūsų atsitiktinių imčių generatorius nereikalauja, kad jį atsisiųstumėte į savo asmeninį kompiuterį. Viskas vyksta internetinio numerių generatoriaus režimu. Tiesiog nurodykite tokius parametrus kaip: internetinių skaičių diapazonas, kuriame skaičiai bus pasirinkti atsitiktinai. Taip pat nurodykite skaičių skaičių, kuriuos norite pasirinkti.

Pavyzdžiui, turite „Vkontakte“ grupę. Grupėje jūs ištraukiate 5 prizus tarp dalyvių, kurie pakartotinai paskelbia įrašą. Specialios aplikacijos pagalba gavome dalyvių sąrašą. Kiekvienam buvo priskirtas serijos numeris numeriams internete.

Dabar einame į mūsų internetinį generatorių ir nurodome skaičių diapazoną (dalyvių skaičių). Pavyzdžiui, mes prašome, kad internete būtų reikalingi 5 numeriai, nes turime 5 prizus. Dabar spaudžiame generavimo mygtuką. Tada gauname 5 atsitiktiniai skaičiai internetu, nuo 1 iki 112 imtinai. Sugeneruoti 5 skaičiai internete atitiks penkių dalyvių, tapusių burtų laimėtojais, eilės numerį. Viskas paprasta ir patogu.

Kitas atsitiktinių skaičių generatoriaus pliusas yra tas, kad visi internetiniai skaičiai generuojami atsitiktinai. Tai yra, negalima nei įtakoti, nei apskaičiuoti, koks skaičius bus kitas. Kas daro jį sąžiningu ir patikimu, o administracija, kuri traukia prizus su mūsų nemokamo generatoriaus pagalba, yra sąžininga ir padori varžovų akivaizdoje. Ir jei abejojate dėl sprendimo, galite naudoti mūsų

Kodėl atsitiktinių skaičių generatorius yra geriausias?

Faktas yra tas numerių generatorius internete galima bet kuriame įrenginyje ir visada internete. Galite sąžiningai sugeneruoti bet kokį skaičių bet kuriai savo idėjai. Ir tas pats projekto naudojimui atsitiktinių skaičių generatorius prisijungęs. Ypač jei jums reikia nustatyti žaidimo laimėtoją arba dėl kito numerio internete. Faktas yra tas atsitiktinių skaičių generatorius generuoja bet kokius skaičius visiškai atsitiktinai, be algoritmų. Iš esmės tas pats su skaičiais.

Atsitiktinių skaičių generatorius internete nemokamai!

Atsitiktinių skaičių generatorius internete nemokamai visiems. Jums nereikia nieko atsisiųsti ar pirkti atsitiktinių skaičių generatorius internetu burtams. Jums tereikia apsilankyti mūsų svetainėje ir atsitiktinai gauti reikiamą rezultatą. Turime ne tik atsitiktinių skaičių generatorius bet ir reikalingas daugeliui, kurie tikrai padės laimėti loterijoje. Tikras internetinis loterijų atsitiktinių skaičių generatorius yra visiškas nelaimingas atsitikimas. Kurią mūsų svetainė gali jums suteikti.

Atsitiktinis skaičius internete

Jei internete ieškote atsitiktinio skaičiaus, mes sukūrėme šį šaltinį kaip tik jums. Nuolat tobuliname savo algoritmus. Čia tu tapsi tikras atsitiktinių skaičių generatorius. Jis patenkins bet kokį poreikį kaip atsitiktinis generatorius, kurio jums reikia visiškai nemokamai ir bet kuriuo metu. Su mumis generuokite atsitiktinius skaičius internete. Visada įsitikinkite, kad kiekvienas sugeneruotas skaičius yra visiškai atsitiktinis.

Atsitiktinių skaičių generatorius

Mūsų atsitiktinių skaičių generatorius atsitiktinai parenka skaičius visiškai atsitiktinai. Nesvarbu, kurią dieną ar valandą turite savo kompiuteryje. Tai tikras aklas pasirinkimas. Atsitiktinis generatorius tiesiog atsitiktinai sumaišo visus skaičius. Ir tada atsitiktinai pasirenka iš jų jūsų nurodytą skaičių atsitiktinių skaičių. Kartais skaičiai gali kartotis, o tai įrodo visišką atsitiktinių skaičių generatoriaus atsitiktinumą.

Atsitiktinis internete

Atsitiktinis yra patikimiausias burtų variantas. Internetinis generatorius yra tikras atsitiktinis pasirinkimas. Esate apsaugoti nuo bet kokios įtakos atsitiktinio skaičiaus pasirinkimui. Atsitiktinės internetinės nugalėtojo atrankos proceso filmavimas vaizdo įraše. Tai viskas, ko jums reikia. Žaisk sąžiningas internetines išdaigas su mūsų internetinis generatorius numeriai. Jūs gaunate nugalėtojus ir patenkintus žaidėjus. Ir mes džiaugiamės, kad galėjome jus pradžiuginti savo atsitiktinių generatorių.

Turime skaičių seką, susidedančią iš beveik nepriklausomų elementų, kurie paklūsta tam tikram skirstiniui. Paprastai pasiskirsto tolygiai.

Atsitiktinius skaičius „Excel“ galite generuoti įvairiais būdais ir būdais. Pažvelkime į geriausius iš jų.

Atsitiktinių skaičių funkcija „Excel“.

  1. Funkcija RAND grąžina atsitiktinį tolygiai paskirstytą realųjį skaičių. Jis bus mažesnis nei 1, didesnis arba lygus 0.
  2. Funkcija RANDBETWEEN grąžina atsitiktinį sveikąjį skaičių.

Pažvelkime į jų naudojimą su pavyzdžiais.

Atsitiktinių skaičių pasirinkimas naudojant RAND

Šiai funkcijai nereikia jokių argumentų (RAND()).

Pavyzdžiui, norėdami sugeneruoti atsitiktinį realųjį skaičių nuo 1 iki 5, naudokite šią formulę: =RAND()*(5-1)+1.

Grąžintas atsitiktinis skaičius yra tolygiai paskirstytas per intervalą.

Kiekvieną kartą, kai apskaičiuojamas darbalapis arba keičiasi bet kurio darbalapio langelio reikšmė, grąžinamas naujas atsitiktinis skaičius. Jei norite išsaugoti sugeneruotą populiaciją, formulę galite pakeisti jos verte.

  1. Paspaudžiame langelį su atsitiktiniu skaičiumi.
  2. Formulės juostoje pažymėkite formulę.
  3. Paspauskite F9. IR ĮVEIK.

Patikrinkime atsitiktinių skaičių pasiskirstymo vienodumą iš pirmosios imties, naudodami pasiskirstymo histogramą.


Vertikalių verčių diapazonas yra dažnis. Horizontaliai – „kišenės“.



RANDBETWEEN funkcija

Funkcijos RANDBETWEEN sintaksė yra (apatinė riba; viršutinė riba). Pirmasis argumentas turi būti mažesnis nei antrasis. Priešingu atveju funkcija išmes klaidą. Laikoma, kad ribos yra sveikieji skaičiai. Formulė atmeta trupmeninę dalį.

Funkcijos naudojimo pavyzdys:

Atsitiktiniai skaičiai 0,1 ir 0,01 tikslumu:

Kaip sukurti atsitiktinių skaičių generatorių programoje Excel

Sukurkime atsitiktinių skaičių generatorių su tam tikro diapazono reikšmės generavimu. Naudojame tokią formulę kaip: =INDEX(A1:A10;INTEGER(RAND()*10)+1).

Padarykime atsitiktinių skaičių generatorių intervale nuo 0 iki 100 žingsniu 10.

Iš sąrašo tekstinės reikšmės reikia pasirinkti 2 atsitiktinius. Naudodamiesi RAND funkcija, lyginame teksto reikšmes diapazone A1:A7 su atsitiktiniais skaičiais.

Naudokime funkciją INDEX, kad pasirinktume dvi atsitiktines teksto reikšmes iš pradinio sąrašo.

Norėdami pasirinkti vieną atsitiktinę reikšmę iš sąrašo, taikykite šią formulę: =INDEX(A1:A7,RANDBETWEEN(1,COUNT(A1:A7))).

Įprasto paskirstymo atsitiktinių skaičių generatorius

Funkcijos RAND ir RANDBETWEEN sukuria atsitiktinius skaičius su vienu skirstiniu. Bet kuri reikšmė su tokia pačia tikimybe gali patekti į apatinę pageidaujamo diapazono ribą ir į viršutinę. Pasirodo, didžiulis skirtumas nuo tikslinės vertės.

Normalus pasiskirstymas reiškia, kad dauguma sugeneruotų skaičių yra arti tikslo. Pataisykime formulę RANDBETWEEN ir sukurkime duomenų masyvą normaliu skirstiniu.

Prekės X kaina yra 100 rublių. Visa pagaminta partija yra paskirstoma normaliai. Atsitiktinis dydis taip pat atitinka normalų tikimybių pasiskirstymą.

Tokiomis sąlygomis vidutinė diapazono vertė yra 100 rublių. Sugeneruokime masyvą ir sukurkime grafiką su normaliu pasiskirstymu, kurio standartinis nuokrypis yra 1,5 rublio.

Naudojame funkciją: =NORMINV(RAND();100;1.5).

„Excel“ apskaičiavo, kurios reikšmės yra tikimybių diapazone. Kadangi tikimybė pagaminti produktą, kurio kaina yra 100 rublių, yra didžiausia, formulė rodo vertes, artimas 100, dažniau nei likusios.

Pereikime prie siužeto. Pirmiausia turite sukurti lentelę su kategorijomis. Norėdami tai padaryti, padalijame masyvą į taškus:

Remiantis gautais duomenimis, galime sudaryti diagramą su normaliuoju skirstiniu. Vertės ašis – kintamųjų skaičius intervale, kategorijos ašis – laikotarpiai.

Internetinis skaičių generatorius yra gana paprasta ir patogi pagalbinė paslauga, skirta atsitiktinių skaičių sekai nustatyti. „Skaičiai valdo pasaulį“, – kartą pasakė Pitagoras. Net senovėje žmonės tikėjo skaičių magija. Taip gimė numerologijos mokslas. Skaičiai žmonėms teikia ir džiaugsmų, ir rūpesčių.
Mes sukūrėme atsitiktinių skaičių generatorių, kad jis tikrai pradžiugintų kiekvieną vartotoją.

Turinys:

Kuo remiasi atsitiktinės atrankos programa?

Atsitiktinis – išvertus iš anglų kalbos reiškia „atsitiktinis“. Labai dažnai stebuklingo atsitiktinumo dėka netyčia parinkti skaičiai tampa skaičiais loterijos bilietas, savo numerį konkurso dalyvių sąraše.

Kur naudojama atsitiktinė atranka?

Skaitinis atsitiktinumas tapo plačiai paplitęs:
loterijų versle
tarp kazino, hipodromų, įvairių gerbėjų sporto varžybos
vykdant socialines varžybas. tinklai

Internetinis atsitiktinių skaičių burtų traukimas užtikrina sąžiningą laimėtojo atranką.

Naudodamiesi mūsų paslauga loterijose galite dalyvauti tokiuose projektuose kaip Gosloto 5 iš 36, 7 iš 49, Stoloto ir kt. Kazino mėgėjai taip pat įvertins mūsų internetinį generatorių.

Deja, žmogaus smegenys dažnai sugeba dubliuoti informaciją, kartais sunku sugalvoti naują derinį. Atsitiktinių skaičių generatorius pasakys, kaip laimėti trokštamą prizą.

Kaip pasirinkti skaičių generatorių

Internete siūloma daug panašių paslaugų, tačiau jų yra 5 priežastys pasirinkti RNG atsitiktinių skaičių generatorių Supergenerators svetainėje:

  • paprastumas ir patogumas naudoti
  • platus skaičių diapazonas
  • mobiliosios versijos patogumas
  • jokios konkrečios nuorodos į socialinius tinklus
  • aiškios instrukcijos, specifinė sąsaja

4 žingsniai į sėkmę naudojant mūsų atsitiktinių imtuvą:

  1. Nurodykite skaitinį diapazoną, kuriame norite gauti pavyzdį
  2. Nustatykite norimą išvesties skaičių skaičių
  3. Spustelėkite mygtuką „Generuoti“.
  4. Nukopijuokite gautą atsakymą ir šokite į lubas iš džiaugsmo!

Su Super skaičių generatoriumi jūsų gyvenime bus daugiau sėkmingų akimirkų!
Dėkojame, kad pasirinkote mūsų nemokamą internetinė paslauga.
Visada malonu padėti jums ir jūsų draugams!

Įvairios loterijos, piešiniai ir pan., dažnai vyksta daugelyje grupių ar viešose vietose socialiniuose tinkluose, Instagram ir kt., ir jas naudoja paskyrų savininkai, norėdami pritraukti į bendruomenę naują auditoriją.

Tokių lošimų rezultatas dažnai priklauso nuo vartotojo sėkmės, nes prizo gavėjas nustatomas atsitiktinai.

Tokiam apsisprendimui burtų organizatoriai beveik visada naudoja internetinį atsitiktinių skaičių generatorių arba iš anksto įdiegtą, kuris platinamas nemokamai.

Pasirinkimas

Gana dažnai išsirinkti tokį generatorių gali būti sunku, nes jų funkcionalumas yra gana skirtingas – vieniems gerokai apribotas, kitiems gana platus.

Diegiama gana daug tokių paslaugų, tačiau sunku tai, kad jos skiriasi savo apimtimi.

Pavyzdžiui, daugelis jų yra susieti savo funkcionalumu su tam tikru Socialinis tinklas(pavyzdžiui, daugelis generatorių programų VKontakte veikia tik su šio socialinio tinklo nuorodomis).

Paprasčiausi generatoriai tiesiog generuoja atsitiktinį skaičių tam tikrame diapazone.

Tai patogu, nes nesieja rezultato su konkrečiu įrašu, o tai reiškia, kad juos galima panaudoti burtams už socialinio tinklo ribų ir įvairiose kitose situacijose.

Jie tikrai neturi jokios kitos paskirties.

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

Patarimas! Renkantis tinkamiausią generatorių, svarbu atsižvelgti į paskirtį, kuriai jis bus naudojamas.

Specifikacijos

Kad būtų galima greičiau pasirinkti optimalią internetinę atsitiktinių skaičių generavimo paslaugą, toliau pateiktoje lentelėje pateikiami pagrindiniai specifikacijas ir tokių programų funkcionalumą.

1 lentelė. Veikimo ypatumai internetinės programos atsitiktiniam skaičiui generuoti
vardas Socialinis tinklas Keli rezultatai Pasirinkite iš skaičių sąrašo Internetinis valdiklis svetainei Pasirinkite iš diapazono Išjunkite pasikartojimus
randstuff Taip Taip Nr Taip Nr
Mesti Lotus Oficiali svetainė arba VKontakte Nr Nr Taip Taip Taip
Atsitiktinis skaičius Oficiali svetainė Nr Nr Nr Taip Taip
Randomus Oficiali svetainė Taip Nr Nr Taip Nr
atsitiktiniai skaičiai Oficiali svetainė Taip Nr Nr Nr Nr

Visos lentelėje aptartos programos yra išsamiau aprašytos toliau.

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

randstuff

<Рис. 3 RandStuff>

Šią programą galite naudoti prisijungę naudodami nuorodą į oficialią jos svetainę http://randstuff.ru/number/.

Tai paprastas atsitiktinių skaičių generatorius, pasižymi greitu ir stabiliu veikimu.

Jis sėkmingai įdiegtas tiek atskiros nepriklausomos programos formatu oficialioje svetainėje, tiek kaip programa „VKontakte“ socialiniame tinkle.

Šios paslaugos ypatumas yra tas, kad ji gali pasirinkti atsitiktinį skaičių tiek iš nurodyto diapazono, tiek iš konkretaus skaičių sąrašo, kurį galima nurodyti svetainėje.

Privalumai:

  • Stabilų ir greitą darbą;
  • Tiesioginės nuorodos į socialinį tinklą trūkumas;
  • Galite pasirinkti vieną ar daugiau numerių;
  • Galite pasirinkti tik iš pateiktų skaičių.

Minusai:

  • Neįmanoma surengti burtų „VKontakte“ (tam reikia atskiros paraiškos);
  • „VKontakte“ programos veikia ne visose naršyklėse;
  • Rezultatas kartais atrodo nuspėjamas, nes naudojamas tik vienas skaičiavimo algoritmas.

Vartotojų atsiliepimai apie šią programą yra tokie: „Nugalėtojus „VKontakte“ grupėse nustatome naudodami šią paslaugą. Ačiū“, „Jūs esate geriausi“, „Naudojuosi tik šia paslauga“.

Mesti Lotus

<Рис. 4 Cast Lots>

Ši programa yra paprastas funkcijų generatorius, įdiegtas oficialioje svetainėje VKontakte programos pavidalu.

Taip pat yra generatoriaus valdiklis, kurį galite įterpti į savo svetainę.

Pagrindinis skirtumas nuo anksčiau aprašytos programos yra tas, kad tai leidžia išjungti rezultato pasikartojimą.

Tai yra, vedant kelias kartas iš eilės per vieną sesiją, skaičius nepasikartos.

  • Valdiklio, kurį galima įterpti į svetainę ar tinklaraštį, buvimas;
  • Galimybė išjungti rezultato pasikartojimą;
  • Funkcijos „dar daugiau atsitiktinumo“ buvimas, kurią įjungus pasikeičia pasirinkimo algoritmas.

Neigiamas:

  • Neįmanoma vienu metu nustatyti kelių rezultatų;
  • Negalėjimas pasirinkti iš konkretaus skaičių sąrašo;
  • Norėdami viešai išrinkti nugalėtoją, turite naudoti atskirą „VKontakte“ valdiklį.

Vartotojų atsiliepimai yra tokie: „Veikia stabiliai, gana patogus naudoti“, „Patogus funkcionalumas“, „Naudojuosi tik šia paslauga“.

Atsitiktinis skaičius

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

Ši paslauga yra adresu http://random number.rf/.

Paprastas generatorius su mažiausiai funkcijų ir papildomų funkcijų.

Gali atsitiktinai generuoti skaičius tam tikrame diapazone (daugiausia nuo 1 iki 99999).

Svetainėje nėra grafinio dizaino, todėl puslapį lengva įkelti.

Rezultatą galima nukopijuoti arba atsisiųsti vienu mygtuko paspaudimu.

Neigiamas:

  • Nėra VKontakte valdiklio;
  • Nėra galimybės laikyti lygiųjų;
  • Jokiu būdu negalima įterpti rezultato į tinklaraštį ar svetainę.

Štai ką apie tai sako vartotojai šią paslaugą: „Geras generatorius, bet nepakanka funkcijų“, „Labai mažai funkcijų“, „Tinka greitai sugeneruoti skaičių be nereikalingų nustatymų“.

Randomus

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

Šį atsitiktinių skaičių generatorių galite naudoti adresu http://randomus.ru/.

Kitas paprastas, bet funkcinis atsitiktinių skaičių generatorius.

Paslauga turi pakankamai funkcionalumo atsitiktiniams skaičiams nustatyti, tačiau ji netinka burtų traukimui ir kitiems sudėtingesniems procesams.

Neigiamas:

  • Neįmanoma surengti loterijų remiantis pakartotiniais įrašais ir pan.
  • Nėra „VKontakte“ programos ar svetainės valdiklio;
  • Neįmanoma išjungti pasikartojančių rezultatų.

Ar kada nors susimąstėte, kaip veikia Math.random()? Kas yra atsitiktinis skaičius ir kaip jis gaunamas? Įsivaizduokite klausimą pokalbio metu – poromis kodo eilučių parašykite atsitiktinių skaičių generatorių. Taigi, kas tai yra, avarija ir ar įmanoma ją numatyti?

Mane labai žavi įvairūs IT galvosūkiai ir galvosūkiai, o atsitiktinių skaičių generatorius yra vienas iš tokių galvosūkių. Paprastai savo telegramos kanale iš interviu surikiuoju visokius galvosūkius ir įvairias užduotis. Atsitiktinių skaičių generatoriaus problema įgijo didelį populiarumą ir aš norėjau ją įamžinti vieno iš autoritetingų informacijos šaltinių gilumoje, tai yra, čia, Habré.

Ši medžiaga bus naudinga visiems tiems front-end kūrėjams ir Node.js kūrėjams, kurie yra technologijų priešakyje ir nori patekti į blockchain projektą / paleidimą, kur klausimai apie saugumą ir kriptografiją, bent jau Pagrindinis lygis, klausiama net front-end kūrėjų.

Pseudo atsitiktinių skaičių generatorius ir atsitiktinių skaičių generatorius

Kad gautume ką nors atsitiktinio, mums reikia entropijos šaltinio, tam tikro chaoso šaltinio, kurį panaudosime atsitiktinumui generuoti.

Šis šaltinis naudojamas entropijai kaupti ir iš jos gauti pradinę vertę (pradinę vertę, sėklą), kuri reikalinga atsitiktinių skaičių generatoriams (RNG) atsitiktiniams skaičiams generuoti.

Pseudoatsitiktinių skaičių generatorius naudoja vieną pradinę vertę, taigi ir pseudoatsitiktiškumą, o atsitiktinių skaičių generatorius visada generuoja atsitiktinį skaičių, pradedant aukštos kokybės atsitiktine verte, paimta iš įvairių entropijos šaltinių.

Entropija - yra sutrikimo matas. Informacijos entropija yra informacijos neapibrėžtumo arba nenuspėjamumo matas.
Pasirodo, norint sukurti pseudoatsitiktinę seką, mums reikia algoritmo, kuris pagal tam tikrą formulę sugeneruotų kokią nors seką. Tačiau tokią seką galima nuspėti. Tačiau įsivaizduokime, kaip galėtume parašyti savo atsitiktinių skaičių generatorių, jei neturėtume Math.random()

PRNG turi tam tikrą algoritmą, kurį galima atkurti.
RNG - visiškai gauna skaičius iš bet kokio triukšmo, gebėjimas apskaičiuoti, kuris linkęs į nulį. Tuo pačiu metu RNG turi tam tikrus paskirstymo išlyginimo algoritmus.

Savo PRNG algoritmo išradimas

Pseudoatsitiktinių skaičių generatorius (PRNG) yra algoritmas, generuojantis skaičių seką, kurios elementai yra beveik nepriklausomi vienas nuo kito ir paklūsta tam tikram pasiskirstymui (dažniausiai vienodai).
Galime paimti kai kurių skaičių seką ir iš jų paimti skaičiaus modulį. Paprasčiausias pavyzdys, kuris ateina į galvą. Turime galvoti apie tai, kokią seką paimti ir iš ko modulį. Jei tik tiesiai nuo 0 iki N ir modulis 2, tada gausite 1 ir 0 generatorių:

Funkcija* rand() ( const n = 100; const mod = 2; tegul i = 0; while (true) ( ​​i % mod; jei (i++ > n) i = 0; ) ) tegul i = 0; for (tegul x rand()) (jei (i++ > 100) nutrūksta; console.log(x); )
Ši funkcija mums generuoja seką 01010101010101 ... ir jos net negalima pavadinti pseudoatsitiktine. Kad generatorius būtų atsitiktinis, jis turi išlaikyti kito bito testą. Bet mes neturime tokios užduoties. Nepaisant to, net ir be jokių testų galime nuspėti kitą seką, vadinasi, toks algoritmas kaktoje netinka, bet einame teisinga kryptimi.

O kas, jei paimtume kokią nors gerai žinomą, bet netiesinę seką, pavyzdžiui, skaičių PI. O kaip modulio vertę imsime ne 2, o ką nors kita. Jūs netgi galite galvoti apie besikeičiančią modulio vertę. Pi skaitmenų seka laikoma atsitiktine. Generatorius gali dirbti naudodamas pi, pradedant nuo nežinomo taško. Tokio algoritmo pavyzdys su PI pagrįsta seka ir modulio pakeitimu:

Const vektorius = [...Math.PI.toFixed(48).replace(".","")]; function* rand() ( for (tegul i=3; i<1000; i++) { if (i >99) i = 2; už (tegul n = 0; n Tačiau JS skaičius PI gali būti rodomas tik iki 48 simbolių ir ne daugiau. Todėl tokią seką vis dar nesunku nuspėti, ir kiekvienas tokio generatoriaus paleidimas visada duos tuos pačius skaičius. Tačiau mūsų generatorius jau pradėjo rodyti skaičius nuo 0 iki 9.

Gavome skaičių generatorių nuo 0 iki 9, tačiau paskirstymas yra labai netolygus ir kiekvieną kartą generuos tą pačią seką.

Galime imti ne skaičių Pi, o laiką skaitine forma ir laikyti šį skaičių skaitmenų seka, o kad seka nepasikartotų kiekvieną kartą, skaitysime ją nuo pabaigos. Iš viso mūsų PRNG algoritmas atrodys taip:

Funkcija* rand() ( tegul naujasSkaičiusVector = () => [...(+new Data)+""].reverse(); tegul vektorius = newNumVector(); tegul i=2; while (true) ( jei ( i++ > 99) i = 2; tegul n=-1; while (++n< vector.length) yield (vector[n] % i); vector = newNumVector(); } } // TEST: let i = 0; for (let x of rand()) { if (i++ >100) pertrauka; console.log(x) )
Dabar tai atrodo kaip pseudoatsitiktinių skaičių generatorius. Ir ta pati Math.random() - yra PRNG, apie tai pakalbėsime šiek tiek vėliau. Be to, kiekvieną kartą pirmasis skaičius skiriasi.

Tiesą sakant, apie šiuos paprasti pavyzdžiai galite suprasti, kaip veikia sudėtingesni atsitiktinių skaičių generatoriai. Ir netgi yra paruoštų algoritmų. Pavyzdžiui, išanalizuokime vieną iš jų – tai Linijinis kongruentinis PRNG (LCPRNG).

Linijinis kongruentinis PRNG

Linear Congruential PRNG (LCPRNG) -  yra įprastas pseudoatsitiktinių skaičių generavimo metodas. Jis neturi kriptografinio stiprumo. Šis metodas susideda iš tiesinės pasikartojančios sekos terminų apskaičiavimo pagal tam tikrą natūralųjį skaičių m, pateiktą pagal formulę. Gauta seka priklauso nuo pradinio skaičiaus pasirinkimo - t.y. sėkla. At skirtingos reikšmės sėkla duoda skirtingas atsitiktinių skaičių sekas. Tokio algoritmo diegimo „JavaScript“ pavyzdys:

Const a = 45; const c = 21; const m = 67; varseed = 2; const rand = () => sėkla = (a * sėkla + c) % m; for(tegul i=0; i<30; i++) console.log(rand())
Daugelis programavimo kalbų naudoja LCPRNG (bet ne tik tokį algoritmą (!).

Kaip minėta aukščiau, tokią seką galima numatyti. Taigi kodėl mums reikia PRNG? Jei kalbame apie saugumą, tai PRNG yra problema. Jei kalbėsime apie kitas užduotis, tai šios savybės  -  gali turėti pliusą. Pavyzdžiui, dėl įvairių specialiųjų efektų ir grafinės animacijos gali tekti dažnai skambinti atsitiktinai. Ir čia svarbu vertybių paskirstymas ir našumas! Apsaugos algoritmai negali pasigirti greičiu.

Kita savybė - atkuriamumas. Kai kurie diegimai leidžia nurodyti pradinę reikšmę, o tai labai naudinga, jei seka turi būti kartojama. Reprodukcija būtina, pavyzdžiui, atliekant bandymus. Ir yra daug kitų dalykų, kuriems nereikia saugaus RNG.

Kaip veikia Math.random().

Metodas Math.random() grąžina pseudoatsitiktinį slankiojo kablelio skaičių iš diapazono = crypto.getRandomValues(new Uint8Array(1)); konsolės žurnalas (rvalue)
Tačiau, skirtingai nei PRNG Math.random(), šis metodas reikalauja daug išteklių. Faktas yra tas, kad šis generatorius naudoja sistemos iškvietimus OS, kad pasiektų entropijos šaltinius (poppy adresas, procesorius, temperatūra ir kt.).


Į viršų