Korjaus Design Huonekalut

Ei biologista satunnaislukuanturilaatikkoa. Satunnais- ja näennäissatunnaisten lukujen anturit. Gpsc kryptografiassa

On olemassa kolme pohjimmiltaan erilaista tapaa saada satunnaislukuja: fyysinen, taulukkomuotoinen ja algoritminen.

Uskotaan, että ensimmäinen yritys luoda fyysinen satunnaislukugeneraattori juontaa juurensa 3500 eKr. ja se liittyy lautapeliin senet, muinaiseen egyptiläiseen maalliseen viihteeseen. Pelin sääntöjen nykyaikaisten rekonstruktioiden mukaan kunkin pelaajan pistemäärän ja siirtojärjestyksen määrittämiseen käytettiin neljää litteää tikkua, joiden toinen puoli oli valkoinen, toinen musta. Mailat heitettiin samaan aikaan ja putoavasta väriyhdistelmästä riippuen ne määrittelivät pelaajille lisämahdollisuuksia. XX vuosisadan alussa. satunnaislukusarjoja simuloitiin manuaalisesti - heittämällä kolikkoa tai noppaa, asettamalla pelikortteja, rulettia, poistamalla palloja uurnasta jne. Nykyaikaiset fyysiset (laitteisto)anturit ovat erikoislaitteita, jotka tuottavat satunnaislukuja, jotka perustuvat luonnollisen tai keinotekoisen alkuperän satunnaisten äänien muuntamiseen (lämpökohina, laukausvaikutus tyhjiöputkissa, radioaktiivinen hajoaminen jne.). Esimerkiksi auto ERNIE 4 (elektroninen satunnaislukuilmaisin),

  • 1 Joskus, vaikkakin harvoin, taulukon antamaa jakaumaa kutsutaan standardiksi 0 1 ... 8 9
  • 0,1 0,1 ... 0,1 0,1 / jonka avulla määritetään kuukausittaisen British Lotteryn voittoluvut, käyttää transistorien lämpökohinaa satunnaismuuttujien lähteenä. Fyysisessä menetelmässä satunnaislukujonojen saamiseksi on ominaisuuksia, jotka ovat haittoja simulaatiomallille. Näitä ovat ensinnäkin tarve erityistoimenpiteisiin varmistaakseen satunnaisluvuiksi muunnetun signaalilähteen vakauden ja tuloksena olevan satunnaislukujonon toistamisen mahdottomuus.

Satunnaislukutaulukot ovat vapaita näistä haitoista. Selvitetään, mitä satunnaislukutaulukolla tarkoitetaan. Oletetaan, että olemme toteuttaneet N riippumattomat kokeet, jotka johtivat satunnaislukuihin a, a 2, osdr. Kirjoittamalla nämä numerot muistiin (ulkoasujärjestyksessä ja suorakulmaisen taulukon muodossa) saadaan niin sanottu satunnaislukutaulukko. Sitä käytetään seuraavasti. Laskelmien aikana saatamme tarvita joko satunnaislukua tai satunnaislukua. Jos vaaditaan satunnaisluku, voimme ottaa minkä tahansa luvun tästä taulukosta. Sama koskee satunnaista kokonaislukua - jokaiselle numerolle voidaan valita mikä tahansa numero. Jos tarvitsemme satunnaisluvun 0 k peräkkäisiä numeroita cc, a 2, ao / ja oletetaan, että 8 = (Hoco ^ .- voi olla rivissä, voit käyttää mitä tahansa valintaalgoritmia, joka ei riipu arvoista taulukon numeroista, aloita mistä tahansa taulukosta, lue mihin tahansa suuntaan.

Ensimmäiset satunnaislukutaulukot saatiin ruleteilla. Tällaisia ​​taulukoita on julkaistu useita kertoja kirjojen muodossa. Yksi kuuluisimmista taulukoista, joka julkaistiin vuonna 1927, sisälsi yli 40 000 satunnaislukua "satunnaisesti laskentaraporteista".

Historiallinen viittaus

Leonard Tippett (Leonard Henry Caleb Tippett, 1902-1985) - englantilainen tilastotieteilijä, K. Pearsonin ja R. Fisherin oppilas. Vuosina 1965-1966. - Royal Statistical Societyn puheenjohtaja. Hänen nimeensä liittyy joitakin tärkeitä tuloksia ääriarvojen teoriassa, esimerkiksi Fisher - Tippett -jakauma ja Fisher - Tippett - Gnedenko -lause.

Myöhemmin suunniteltiin erikoislaitteita (koneita), jotka luovat mekaanisesti satunnaislukuja. Ensimmäisen tällaisen koneen käyttivät vuonna 1939 M.J. Kendall ja B. Babington-Smith luodakseen taulukoita, joissa oli 100 000 satunnaista numeroa. Vuonna 1955 yritys RAND Corporation julkaisi tunnettuja taulukoita miljoonalla satunnaisella numerolla, jotka on saatu toisella tämäntyyppisellä koneella. Satunnaislukutaulukoiden käytännön soveltaminen rajoittuu tällä hetkellä pääsääntöisesti ongelmiin, joissa käytetään satunnaisvalintamenetelmiä.

näytteitä esimerkiksi sosiologisessa tutkimuksessa tai kappaletuotteiden laadun tilastollisen hyväksynnän tarkastuksessa eri tarkoituksiin.

Se on kiinnostavaa

Venäjällä on voimassa GOST 18321-73 (ST SEV 1934-79), jossa vahvistetaan säännöt tuoteyksiköiden valitsemiseksi otoksesta tilastollisen hyväksynnän laadunvalvonnan aikana, tilastolliset analyysimenetelmät ja teknisten prosessien säätely kaikentyyppisille kappaleille. tuotteet teollisiin tarkoituksiin ja kulutustavarat. Siinä mainitaan erityisesti, että valittaessa tuotantoyksiköitä otoksesta "käytetään ST SEV 546-77:n mukaisia ​​satunnaislukutaulukoita".

hakea uudelleen; kaikki numerot ovat helposti toistettavissa; ja numeroiden tarjonta tällaisessa sarjassa on rajoitettu. Pseudosatunnaislukujen sarjalla on kuitenkin selvä etu taulukkoon verrattuna: näennäissatunnaisen luvun laskemiseen on yksinkertaisia ​​kaavoja, kun taas kunkin luvun saaminen vaatii vain 3-5 komentoa ja laskentaohjelma vie vain muutaman solun. asemassa.

On olemassa monia algoritmeja näennäissatunnaisten lukujen sekvenssien saamiseksi, ja tällaisten algoritmien toteutuksia, joita kutsutaan pseudosatunnaislukujen antureiksi (generaattoreiksi), kuvataan yksityiskohtaisesti erikoiskirjallisuudessa. Tässä on joitain tunnetuimmista algoritmeista.

  • Tippett L. Satunnaiset näytteenottoluvut. Lontoo: Cambridge University Press, 1927.
  • Katso: D.E. Knut, The Art of Programming. 3. painos M.: Williams, 2000. T. 2. Ch. 3. Satunnaiset luvut.

Deterministinen PRNG

Mikään deterministinen algoritmi ei voi tuottaa täysin satunnaislukuja, se voi vain arvioida joitakin satunnaislukujen ominaisuuksia. Kuten John von Neumann sanoi: jokainen, jolla on heikkous aritmeettisiin menetelmiin satunnaislukujen saamiseksi, on epäilemättä synti».

Mikä tahansa PRNG, jolla on rajoitetut resurssit, juuttuu ennemmin tai myöhemmin silmukkaan - se alkaa toistaa samaa numerosarjaa. PRNG-jaksojen pituus riippuu generaattorista itsestään ja on keskimäärin noin 2 n / 2, missä n on sisäisen tilan koko bitteinä, vaikka lineaaristen kongruentti- ja LFSR-generaattoreiden maksimijaksot ovat luokkaa 2 n. Jos PRNG voi konvergoida liian lyhyiksi sykleiksi, PRNG muuttuu ennustettavaksi ja käyttökelvottomaksi.

Useimmat yksinkertaiset aritmeettiset generaattorit, vaikka ne ovat nopeita, kärsivät monista vakavista haitoista:

  • Jakso / jaksot liian lyhyet.
  • Peräkkäiset arvot eivät ole riippumattomia.
  • Jotkut bitit ovat "vähemmän satunnaisia" kuin toiset.
  • Epätasainen yksiulotteinen jakautuminen.
  • Käännettävyys.

Erityisesti mainframe-algoritmi osoittautui erittäin huonoksi, mikä herätti epäilyksiä monien tätä algoritmia käyttävien tutkimusten tulosten luotettavuudesta.

PRNG entropialähteellä tai RNG

Sen lisäksi, että on olemassa tarve tuottaa helposti toistettavia satunnaislukusarjoja, on olemassa myös tarve tuottaa täysin arvaamattomia tai yksinkertaisesti täysin satunnaisia ​​lukuja. Tällaisia ​​generaattoreita kutsutaan satunnaislukugeneraattoreita(RNG - eng. satunnaislukugeneraattori, RNG). Koska tällaisia ​​generaattoreita käytetään useimmiten luomaan ainutlaatuisia symmetrisiä ja epäsymmetrisiä avaimia salausta varten, ne on useimmiten rakennettu vahvan PRNG:n ja ulkoisen entropialähteen yhdistelmästä (ja juuri tämä yhdistelmä ymmärretään nykyään yleisesti RNG:ksi). .

Melkein kaikki suuret mikrosirujen valmistajat toimittavat laitteisto-RNG:itä eri entropialähteillä käyttämällä erilaisia ​​menetelmiä puhdistaakseen ne väistämättömästä ennustettavuudesta. Tällä hetkellä kaikkien olemassa olevien mikrosirujen satunnaislukujen keräämisen nopeus (useita tuhansia bittejä sekunnissa) ei kuitenkaan vastaa nykyaikaisten prosessorien nopeutta.

Henkilökohtaisissa tietokoneissa ohjelmistojen RNG-tekijät käyttävät paljon nopeampia entropialähteitä, kuten äänikortin kohinaa tai prosessorin kellolaskuja. Ennen kuin kellolaskurin arvojen lukeminen tuli mahdolliseksi, entropian kokoelma oli RNG:n haavoittuvin kohta. Tämä ongelma ei ole vieläkään täysin ratkaistu monissa laitteissa (esim. älykortit), jotka ovat edelleen haavoittuvia tällä tavalla. Monet RNG:t käyttävät edelleen perinteisiä (vanhentuneita) menetelmiä entropian keräämiseen, kuten käyttäjän vasteen mittaamiseen (hiiren liike jne.), kuten esimerkiksi säikeiden sisällä tai vuorovaikutuksessa säikeiden välillä, kuten esimerkiksi Javassa Secure random.

Esimerkkejä RNG- ja entropialähteistä

Muutamia esimerkkejä RNG:istä entropialähteineen ja generaattoreineen:

Entropian lähde PRNG Arvokkuus Vikoja
/ dev / random Linuxissa Prosessorin syklilaskuri, mutta kerätään vain laitteiston keskeytysten aikana LFSR, ulostulon hajautusSe "lämpenee" hyvin pitkään, se voi "jäädä jumiin" pitkäksi aikaa tai se toimii PRNG:nä ( / dev / urandom)
Yarrow Kirjailija: Bruce Schneier Perinteiset (vanhentuneet) menetelmät AES -256 jaJoustava kryptografinen suunnittelu "Lämpenee" pitkään, hyvin pieni sisäinen tila, riippuu liikaa valittujen algoritmien kryptografisesta vahvuudesta, hidas, soveltuu yksinomaan avainten luomiseen
Generaattori Leonid Juriev Äänikortin melu ? Todennäköisesti hyvä ja nopea entropian lähde Ei riippumatonta, jonka tiedetään olevan kryptografisesti vahva PRNG, saatavana yksinomaan Windows-muodossa
Microsoft Sisäänrakennettu Windowsiin, ei "jumiudu" Pieni sisätila, helposti ennustettavissa
Vuorovaikutus säikeiden välillä Javalla ei ole vielä muuta vaihtoehtoa, suuri sisäinen tila Hidas entropiakokoelma
Ruptorin kaaos Prosessorin syklilaskuri, kerätään jatkuvasti 4096-bittisen sisäisen tilan tiivistäminen Marsaglia-generaattorin epälineaarisen muunnelman perusteella Kunnes kaikista nopein, suuri sisäinen tila, ei "jää jumiin"
Ruptorin RRAND Prosessorin syklilaskuri Sisäisen tilan salaus stream-salauksellaErittäin nopea, mielivaltaisen kokoinen sisätila, ei "jää jumiin"

PRNG kryptografiassa

Eräänlaisia ​​PRNG:itä ovat PRBG - pseudosatunnaisten bittien generaattorit sekä erilaiset virtasalaukset. PRNG, kuten virtasalaukset, koostuu sisäisestä tilasta (yleensä 16 bitistä useisiin megatavuihin), toiminnosta, jolla alustetaan sisäinen tila avaimella, tai siemen(eng. siemen), sisäiset tilanpäivitystoiminnot ja lähtötoiminnot. PRNG:t on jaettu yksinkertaisiin aritmeettisiin, rikkoutuneisiin kryptografisiin ja kryptografisiin. Niiden yhteinen tarkoitus on tuottaa lukujonoja, joita ei voida erottaa satunnaisista laskentamenetelmillä.

Vaikka monet vahvat PRNG:t tai virtasalaukset tarjoavat paljon enemmän "satunnaisia" lukuja, tällaiset generaattorit ovat paljon hitaampia kuin perinteiset aritmeettiset generaattorit eivätkä välttämättä sovellu mihinkään sellaiseen tutkimukseen, joka edellyttää prosessorin olevan vapaata hyödyllisempiä laskelmia varten.

Sotilaallisiin tarkoituksiin ja kentällä käytetään vain luokiteltuja synkronisia kryptografisesti vahvoja PRNG:itä (virtasalauksia), lohkosalauksia ei käytetä. Esimerkkejä tunnetuista kryptografisesti vahvoista PRNG:istä ovat ISAAC, SEAL, Snow, Blumin, Blumin ja Shubin erittäin hidas teoreettinen algoritmi, sekä laskurit, joissa on kryptografiset hajautusfunktiot tai kryptografisesti vahvat lohkosalaukset tulosfunktion sijaan.

Laitteisto PRNG

Lukuun ottamatta vanhentuneita, tunnettuja LFSR-generaattoreita, joita käytettiin laajalti laitteisto-PRNG:inä 1900-luvulla, valitettavasti nykyaikaisista laitteisto-PRNG:istä (stream ciphers) tiedetään hyvin vähän, koska useimmat niistä on suunniteltu sotilaallisiin tarkoituksiin ja niitä pidetään salassa. . Lähes kaikki olemassa olevat kaupalliset PRNG-laitteistot ovat patentoituja ja myös salassa pidettyjä. Laitteiston PRNG:itä rajoittavat tiukat vaatimukset kulutetulle muistille (useimmiten muistin käyttö on kielletty), nopeudelle (1-2 kellojaksoa) ja alueelle (useita satoja FPGA:ta - tai

Hyvien PRNG-laitteistojen puutteen vuoksi valmistajat joutuvat käyttämään saatavilla olevia paljon hitaampia mutta yleisesti tunnettuja lohkosalauksia (Computer Review # 29 (2003))

  • Juri Lifshits. Kurssi "Salauksen nykyaikaiset ongelmat" Luento 9: Pseudosatunnaiset generaattorit
  • L. Barash. AKS-algoritmi lukujen tarkistamiseen yksinkertaisuuden vuoksi ja vakioiden etsimiseen näennäissatunnaislukugeneraattoreille
  • Zhelnikov Vladimir. Pseudosatunnaiset numerosarjat // Salaus papyruksesta tietokoneeseen M .: ABF, 1996.
  • random.org (eng.) - online-palvelu satunnaislukujen luomiseen
  • Kryptografiset satunnaiset numerot
  • Satunnaislukujen generoinnin teoria ja käytäntö (eng.)
  • Zvi Gutterman, Benny Pinkas, Tzachy Reinman. Linuxin satunnaislukugeneraattorin analyysi
  • Tilastollinen testipaketti satunnaisten ja näennäissatunnaisten numerogeneraattoreiden salaussovelluksiin NIST SP 800-22
  • Ensimmäisen algoritmin pseudosatunnaislukujen saamiseksi ehdotti J. Neumann. Sitä kutsutaan keskimmäisten neliöiden menetelmäksi.

    Olkoon 4-numeroinen luku R 0 = 0,9876. Tehdään neliö. Saamme 8-numeroisen luvun R 0 2 = 0,97535376. Valitaan tästä luvusta 4 keskimmäistä numeroa ja laitetaan R 1 = 0,5353. Sitten neliöimme sen uudelleen ja poimimme siitä neljä keskimmäistä numeroa. Saamme R 2 jne. Tämä algoritmi ei ole osoittanut itseään. Se osoittautui tarpeettoman pieniksi R:n arvoiksi i .

    On kuitenkin mielenkiintoista tutkia tämän generaattorin laatua oikealle siirretyllä numeron valintaryhmällä R:lle i 2 :

    jossa a on murtoluvun maksimiarvo tietylle tietokoneelle (esimerkiksi a = 8).

    b on desimaalien määrä luvussa R i(esimerkiksi 5).

    INT (A) - luvun kokonaislukuosa.

    Jos a = 8, b = 5, R 0 = 0,51111111 PKZX-Spectrumilla, saadaan noin 1200 ei-toistuvaa numeroa.

    Harjoittele: Tutkimus tulisi suorittaa vaihtelevilla a, b, R 0 ... Selvitä millä arvoilla a, b, R 0 Ei-toistuvien lukujen sarjan suurin pituus L saadaan "hyvillä" stokastisilla parametreilla. Selvitä, vaikuttaako R:n arvo 0 anturin laadusta. Jos näin on, määritä parametrin R "hyväksyttävien" arvojen alue 0 ... Esitä arvojen a, b, R optimaalisen muunnelman testauksen tulokset 0 .

    Multiplikatiiviset algoritmit. Anturi # 2: Lehmer Linear Congruential Generator 1951.

    missä sinä i, M, C ja p ovat kokonaislukuja.

    AmodB - divisioonan loppuosa täysin AnaB,

    A mod B = A-B * INT (A / B)

    Luodulla sekvenssillä on toistuva jakso, joka ei ylitä p numeroa.

    Maksimijakso saadaan C0:lle, mutta tällainen generaattori antaa huonot stokastiset tulokset.

    Kun C = 0, generaattoreita kutsutaan kertoviksi. Niillä on parhaat stokastiset parametrit. Niiden käytön kaavoja kutsutaan myös vähennysmenetelmäksi.

    Suosituin menetelmä pseudosatunnaislukujen saamiseksi on vähennysmenetelmä seuraavan kaavan mukaan:

    missä sinä i, M, p-kokonaisluvut, 0 i <1, 1U ip-1.

    Jos valitset U 0 ja M siten, että R 0 = U 0 / p sai pelkistymättömän murto-osan ja ota p ja M keskenään alkuluku, sitten kaikki R i ovat muodon redusoitumattomia murto-osia: R i= U i/ s.

    Saamme ei-toistuvan numerosarjan suurimman (mutta enintään p) pituuden. U:n arvot 0 , p ja M voidaan valita kätevästi alkuluvuista.

    Harjoittele: Tutki mitä varten U 0 , p ja M ei-toistuvien lukujen sarjan pituus on vähintään 10000 "hyville" stokastisille parametreille. Selvitä, vaikuttaako R:n arvo 0 for Mip = const anturin tilastollisissa ominaisuuksissa. Jos on, määritä sallittujen arvojen alue U 0 ... Esitä generaattorin testitulokset p:n, M:n ja U:n optimaalisille arvoille 0 .

    Anturi # 3: Korobovin modifikaatio.

    jossa p on iso alkuluku, esimerkiksi 2027, 5087, ...

    M on kokonaisluku, joka täyttää ehdot:

    n on kokonaisluku. Nuo. valitse M lähellä p / 2 lukujoukosta M = p– 3 n.

    Esimerkiksi arvolle p = 5087 otamme n = 7. Koska 3 7 = 2187 ja 3 8 = 6561 on suurempi kuin p. Joten: M = 5087-2187 = 2900.

    Saamme numerot U i välissä = ja numero R i alueella (0,1).

    Harjoittele: Valitse maailma, jossa anturin parhaat tilastolliset parametrit ja suurin pituus L. saadaan. Selvitä, vaikuttaako R:n arvo 0 anturin stokastisista ominaisuuksista ja jos on, määritä sallittujen arvojen alue R 0 ... Esitä anturin testitulokset optimaalisille arvoille M, pi ja R 0 .


    Huomaa, että ihannetapauksessa satunnaislukujakauman tiheyskäyrä näyttäisi kuvan 1 mukaiselta. 22.3. Eli ihannetapauksessa jokainen intervalli sisältää saman määrän pisteitä: N i = N/k , missä N- pisteiden kokonaismäärä, k- välien lukumäärä, i= 1,…, k .

    Riisi. 22.3. Satunnaislukujen taajuuskaavio,
    ideaaligeneraattorin tuottama teoreettisesti

    On syytä muistaa, että mielivaltaisen satunnaisluvun luominen koostuu kahdesta vaiheesta:

    • generoidaan normalisoitu satunnaisluku (eli tasaisesti jakautunut 0:sta 1:een);
    • muuntaa normalisoituja satunnaislukuja r i satunnaisiin numeroihin x i, jotka jaetaan vaaditun käyttäjän (mielivaltaisen) jakelulain mukaan tai vaaditulla aikavälillä.

    Satunnaislukugeneraattorit on jaettu:

    • fyysinen;
    • taulukkomainen;
    • algoritminen.

    Fyysinen RNG

    Esimerkki fyysisestä RNG:stä on: kolikko (päät - 1, tails - 0); noppaa; rumpu nuolella, joka on jaettu numeroilla varustettuihin sektoreihin; hardware noise generator (HS), jota käytetään kohinaisena lämpölaitteena, esimerkiksi transistori (kuvat 22.4-22.5).

    Riisi. 22.4. Kaavio laitteistomenetelmästä satunnaislukujen generoimiseksi
    Riisi. 22.5. Kaavio satunnaislukujen saamisesta laitteistomenetelmällä
    Tehtävä "Satunnaislukujen luominen kolikolla"

    Luo kolikolla satunnainen 3-numeroinen luku, joka jakautuu tasaisesti 0:sta 1:een. Tarkkuus on kolmen desimaalin tarkkuudella.

    Ensimmäinen tapa ratkaista ongelma
    Heitä kolikkoa 9 kertaa, ja jos kolikko nousee kärkeen, kirjoita "0", jos päät, niin "1". Oletetaan siis, että kokeen tuloksena saimme satunnaisen sekvenssin 100110100.

    Piirrä väli 0:sta 1:een. Lukemalla numerot järjestyksessä vasemmalta oikealle, jaa väli puoliksi ja valitse joka kerta jokin seuraavan intervallin osa (jos putosi 0, niin vasen, jos putosi 1, sitten oikea). Siten voit päästä mihin tahansa välin pisteeseen niin tarkasti kuin haluat.

    Niin, 1 : väli puolitetaan - ja - oikea puoli valitaan, väliä kavennetaan:. Seuraava numero, 0 : väli puolitetaan - ja - vasen puolisko valitaan, väliä kavennetaan:. Seuraava numero, 0 : väli puolitetaan - ja - vasen puolisko valitaan, väliä kavennetaan:. Seuraava numero, 1 : väli puolitetaan - ja - oikea puoli valitaan, väliä kavennetaan:.

    Tehtävän tarkkuuden ehdolla ratkaisu on löydetty: se on mikä tahansa luku väliltä, ​​esimerkiksi 0,625.

    Periaatteessa, jos lähestyt tiukasti, niin intervallien jakoa on jatkettava, kunnes löydetyn intervallin vasen ja oikea raja YHTEIVÄT kolmannen desimaalin tarkkuudella. Toisin sanoen tarkkuuden kannalta luotu numero ei ole enää erotettavissa mistään numerosta sen välin välillä, jossa se sijaitsee.

    Toinen tapa ratkaista ongelma
    Jaetaan tuloksena oleva binäärijono 100110100 kolmioiksi: 100, 110, 100. Kun nämä binääriluvut on muutettu desimaalilukuiksi, saadaan: 4, 6, 4. Korvaamalla "0." eteen saadaan: 0,464. Tällä menetelmällä voidaan saada vain lukuja 0,000 - 0,777 (koska kolmesta binäärinumerosta voidaan puristaa enintään 111 2 = 7 8) - eli itse asiassa nämä luvut esitetään oktaalilukujärjestelmässä. Käännöksiä varten oktaali numerot sisään desimaali toteutamme edustuksen:
    0,464 8 = 4 · 8 –1 + 6 · 8 –2 + 4 · 8 –3 = 0,6015625 10 = 0,602 10.
    Vaadittu luku on siis: 0,602.

    Taulukko RNG

    Taulukko-RNG:t käyttävät satunnaislukujen lähteenä erityisesti koottuja taulukoita, jotka sisältävät varmennettuja korreloimattomia, eli toisistaan ​​riippumattomia lukuja. Pöytä 22.1 esittää pienen fragmentin tällaisesta taulukosta. Selailemalla taulukkoa vasemmalta oikealle ylhäältä alas, saat tasaisesti jakautuneita satunnaislukuja 0:sta 1:een vaaditulla määrällä desimaalipaikkoja (esimerkissämme käytämme kolmea desimaaleja jokaiselle numerolle). Koska taulukon numerot eivät ole riippuvaisia ​​toisistaan, taulukkoa voidaan kulkea eri tavoin, esimerkiksi ylhäältä alas tai oikealta vasemmalle, tai vaikkapa valita numeroita, jotka ovat parillisissa paikoissa.

    Taulukko 22.1.
    Satunnaisia ​​numeroita. Tasaisesti
    jaettu 0 - 1 satunnaislukuihin
    Satunnaisia ​​numeroita Tasaisesti jaettu
    0-1 satunnaislukuja
    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
    … …

    Tämän menetelmän etuna on, että se antaa todella satunnaisia ​​lukuja, koska taulukko sisältää varmennettuja korreloimattomia lukuja. Menetelmän haitat: suuren numeromäärän tallentaminen vaatii paljon muistia; suuret vaikeudet tällaisten taulukoiden luomisessa ja tarkistamisessa, toistot taulukkoa käytettäessä eivät enää takaa numeerisen sekvenssin satunnaisuutta ja siten tuloksen luotettavuutta.

    Siellä on taulukko, joka sisältää 500 täysin satunnaista varmennettua lukua (otettu I. G. Venetskyn, V. I. Venetskajan kirjasta "Matemaattiset ja tilastolliset peruskäsitteet ja kaavat taloudellisessa analyysissä").

    Algoritminen RNG

    Näillä RNG:illä luodut luvut ovat aina näennäissatunnaisia ​​(tai näennäissatunnaisia), eli jokainen seuraava luotu luku riippuu edellisestä:

    r i + 1 = f(r i) .

    Tällaisista luvuista koostuvat sekvenssit muodostavat silmukoita, eli on välttämättä sykli, joka toistuu äärettömän monta kertaa. Toistuvia syklejä kutsutaan jaksoiksi.

    RNG-datan etuna on nopeus; generaattorit eivät käytännössä vaadi muistiresursseja, ne ovat kompakteja. Haitat: lukuja ei voida kutsua täysin satunnaisiksi, koska niiden välillä on riippuvuus, samoin kuin jaksojen läsnäolo lähes satunnaisten lukujen sarjassa.

    Harkitse useita algoritmisia menetelmiä RNG:n saamiseksi:

    • keskimmäisen neliön menetelmä;
    • menetelmä keskimmäiset tuotteet;
    • sekoitusmenetelmä;
    • lineaarinen kongruenttimenetelmä.

    Keskimääräisen neliön menetelmä

    Siinä on nelinumeroinen luku R 0. Tämä luku neliötetään ja syötetään R yksi . Kauempana R 1 otetaan keskeltä (neljä keskimmäistä numeroa) - uusi satunnaisluku - ja kirjoitetaan sisään R 0. Sitten toimenpide toistetaan (katso kuva 22.6). Huomaa, että itse asiassa sitä ei tarvitse ottaa satunnaislukuna ghij, a 0.ghij- vasemmalla oleva nolla ja desimaalipilkku. Tämä tosiasia näkyy kuten kuvassa. 22.6 ja myöhemmissä vastaavissa kuvissa.

    Riisi. 22.6. Keskimääräisten neliöiden kaavio

    Menetelmän haitat: 1) jos jossain iteraatiossa numero R 0 tulee yhtä suureksi kuin nolla, jolloin generaattori rappeutuu, joten alkuarvon oikea valinta on tärkeää R 0; 2) generaattori toistaa sarjan läpi M n portaat (parhaimmillaan), missä n- numerokapasiteetti R 0 , M- numerojärjestelmän perusta.

    Esimerkiksi kuvassa Fig. 22.6: jos numero R 0 esitetään binäärimuodossa, näennäissatunnaisten lukujen sarja toistetaan 2 4 = 16 vaiheessa. Huomaa, että sekvenssin toisto voi tapahtua aikaisemmin, jos aloitusnumeroa ei ole valittu hyvin.

    Yllä kuvatun menetelmän ehdotti John von Neumann, ja se on peräisin vuodelta 1946. Koska tämä menetelmä osoittautui epäluotettavaksi, se hylättiin nopeasti.

    Keskimmäisten tuotteiden menetelmä

    Määrä R 0 kerrotaan R 1, saadusta tuloksesta R 2 irrota keskiosa R 2 * (tämä on toinen satunnaisluku) ja kerrottuna R yksi . Kaikki myöhemmät satunnaisluvut lasketaan käyttämällä tätä kaaviota (katso kuva 22.7).

    Riisi. 22.7. Keskimmäisten tuotteiden menetelmä

    Sekoitusmenetelmä

    Sekoitusmenetelmä käyttää operaatioita solun sisällön siirtämiseen syklisesti vasemmalle ja oikealle. Menetelmän idea on seuraava. Anna solun varastoida siemeniä R 0. Siirtämällä solun sisältöä syklisesti vasemmalle 1/4 solun pituudesta, saamme uuden luvun R 0*. Samoin solun sisällön syklinen siirtäminen R 0 oikealle 1/4 solun pituudesta, saamme toisen luvun R 0**. Lukujen summa R 0 * ja R 0 ** antaa uuden satunnaisluvun R yksi . Edelleen R 1 syötetään sisään R 0, ja koko toimintosarja toistetaan (katso kuva 22.8).


    Riisi. 22.8. Sekoitusmenetelmäkaavio

    Huomaa, että summa, joka saadaan summasta R 0 * ja R 0 **, ei ehkä mahdu kokonaan soluun R yksi . Tässä tapauksessa ylimääräiset numerot tulee hylätä vastaanotetusta numerosta. Selitetään tämä kuviolle. 22.8, jossa kaikki solut esitetään kahdeksalla binäärinumerolla. Päästää R 0 * = 10010001 2 = 145 10 , R 0 ** = 10100001 2 = 161 10 , sitten R 0 * + R 0 ** = 100110010 2 = 306 10 ... Kuten näet, numerossa 306 on 9 numeroa (binäärilukujärjestelmässä) ja solu R 1 (kuten R 0) voi sisältää enintään 8 bittiä. Siksi ennen arvon syöttämistä R 1 on tarpeen poistaa yksi "ylimääräinen", vasemmanpuoleisin bitti numerosta 306, minkä seurauksena R 1 ei mene numeroon 306, vaan 00110010 2 = 50 10. Huomaa myös, että kielissä, kuten Pascal, ylimääräisten bittien "lyhentäminen" solun ylivuodon yhteydessä tapahtuu automaattisesti määritetyn muuttujan tyypin mukaisesti.

    Lineaarinen kongruenttimenetelmä

    Lineaarinen kongruenttimenetelmä on yksi yksinkertaisimmista ja yleisimmin käytetyistä satunnaislukujen simulointimenetelmistä. Tämä menetelmä käyttää moda ( x, y), joka palauttaa ensimmäisen argumentin loppuosan jaettuna toisella. Jokainen myöhempi satunnaisluku lasketaan edellisen satunnaisluvun perusteella seuraavan kaavan avulla:

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

    Tällä kaavalla saatua satunnaislukujen sarjaa kutsutaan lineaarinen kongruenttisekvenssi... Monet kirjoittajat kutsuvat lineaarista kongruenttisekvenssiä for b = 0 multiplikatiivinen kongruenttimenetelmä, ja klo b ≠ 0 — sekoitettu kongruenttimenetelmä.

    Laadukasta generaattoria varten sinun on valittava sopivat kertoimet. On välttämätöntä, että numero M oli melko suuri, koska ajanjaksolla ei voi olla enempää M elementtejä. Toisaalta tässä menetelmässä käytetty jako on melko hidas operaatio, joten binääritietokoneen olisi loogista valita M = 2 N, koska tässä tapauksessa jaon loppuosan löytäminen pelkistetään tietokoneen sisällä binääriseksi loogiseksi operaatioksi "AND". On myös yleistä valita suurin alkuluku M alle 2 N: erikoiskirjallisuudessa on todistettu, että tässä tapauksessa saadun satunnaisluvun vähiten merkitsevät bitit r i+ 1 käyttäytyvät yhtä satunnaisesti kuin vanhemmat, millä on positiivinen vaikutus koko satunnaislukusarjaan kokonaisuutena. Esimerkki on yksi Mersennen numerot yhtä suuri kuin 2 31 - 1, ja siten M= 2 31 - 1.

    Yksi lineaaristen kongruenttijonojen vaatimuksista on suurin mahdollinen jaksopituus. Jakson pituus riippuu arvoista M , k ja b... Alla esittämämme lauseen avulla voimme määrittää, onko mahdollista saavuttaa maksimipituinen jakso tietyille arvoille M , k ja b .

    Lause... Lineaarinen kongruentti jono, joka määritellään numeroilla M , k , b ja r 0, jakson pituus on M jos ja vain jos:

    • numerot b ja M keskenään yksinkertainen;
    • k- 1 monikerta p jokaiselle yksinkertaiselle p joka on jakaja M ;
    • k- 1 4:n kerrannainen jos M 4:n monikerta.

    Lopuksi päätetään muutamalla esimerkillä lineaarisen kongruenssimenetelmän käyttämisestä satunnaislukujen luomiseen.

    Havaittiin, että esimerkin 1 tiedoista luotu pseudosatunnaislukusarja toistetaan joka M/ 4 numeroa. Määrä q asetetaan mielivaltaisesti ennen laskelmien aloittamista, mutta on pidettävä mielessä, että sarja antaa vaikutelman satunnaisesta suurelle k(mikä tarkoittaa sitä q). Tulosta voi hieman parantaa, jos b outoa ja k= 1 + 4 q - tässä tapauksessa rivi toistetaan joka kerta M numeroita. Pitkän etsinnän jälkeen k tutkijat päätyivät arvoihin 69069 ja 71365.

    Satunnaislukugeneraattori, joka käyttää esimerkin 2 tietoja, tuottaa satunnaisia ​​ei-toistuvia lukuja, joiden jakso on 7 miljoonaa.

    D. H. Lehmer ehdotti kertovan menetelmän pseudosatunnaislukujen muodostamiseksi vuonna 1949.

    Generaattorin laadun tarkistaminen

    RNG:n laadusta riippuu koko järjestelmän laatu ja tulosten tarkkuus. Siksi RNG:n generoiman satunnaissekvenssin on täytettävä joukko kriteerejä.

    Suoritetut tarkastukset ovat kahdenlaisia:

    • jakelun yhdenmukaisuuden tarkastukset;
    • tilastollinen riippumattomuus.

    Jakelun tasaisuuden tarkastukset

    1) RNG:n tulisi tuottaa lähellä seuraavia yhtenäiselle satunnaislakille ominaisia ​​tilastollisten parametrien arvoja:

    2) Taajuustesti

    Taajuustestin avulla voit selvittää, kuinka monta numeroa väliin kuuluu (m r – σ r ; m r + σ r) , eli (0,5 - 0,2887; 0,5 + 0,2887) tai viime kädessä (0,2113; 0,7887). Koska 0,7887 - 0,2113 = 0,5774, päättelemme, että hyvässä RNG:ssä noin 57,7 % kaikista pudonneista satunnaisluvuista pitäisi osua tälle välille (katso kuva 22.9).

    Riisi. 22.9. Ihanteellisen RNG:n taajuuskaavio
    jos se tarkistetaan taajuustestiä varten

    On myös tarpeen ottaa huomioon, että väliin (0; 0,5) osuvien numeroiden lukumäärän tulee olla suunnilleen yhtä suuri kuin väliin (0,5; 1) osuvien numeroiden lukumäärä.

    3) Chi-neliötesti

    Chi-neliötesti (χ 2 -testi) on yksi tunnetuimmista tilastollisista testeistä; se on pääasiallinen menetelmä, jota käytetään yhdessä muiden kriteerien kanssa. Khin-neliötestin ehdotti vuonna 1900 Karl Pearson. Hänen merkittävää työtään pidetään modernin matemaattisen tilaston perustana.

    Meidän tapauksessamme khin-neliötestin avulla voimme selvittää, kuinka paljon todellinen RNG on lähellä RNG-standardia, eli täyttääkö se tasaisen jakelun vaatimuksen vai ei.

    Taajuuskaavio viite RNG on esitetty kuvassa. 22.10. Koska referenssi-RNG:n jakautumislaki on yhtenäinen, (teoreettinen) todennäköisyys p i lyömällä numeroita sisään i th intervalli (kaikki nämä intervallit k) on yhtä suuri kuin p i = 1/k ... Ja siten jokaisessa k välit putoavat sileä päällä p i · N numerot ( N Onko luotujen numeroiden kokonaismäärä).

    Riisi. 22.10. Referenssi-RNG:n taajuuskaavio

    Todellinen RNG tuottaa numeroita jakautuneina (eikä välttämättä tasaisesti!) k välein ja jokainen intervalli sisältää n i numerot (summa n 1 + n 2 + ... + n k = N ). Kuinka voimme määrittää, kuinka hyvä testattu RNG on ja kuinka lähellä referenssiä? On varsin loogista tarkastella vastaanotettujen numeroiden välisten erojen neliöitä. n i ja "viittaus" p i · N ... Lisätään ne, ja tuloksena saadaan:

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

    Tästä kaavasta seuraa, että mitä pienempi ero kussakin termissä on (ja siten mitä pienempi on χ 2 exp.:n arvo), sitä vahvempi todellisen RNG:n generoimien satunnaislukujen jakautumislaki pyrkii olemaan yhtenäinen.

    Edellisessä lausekkeessa kullekin termille on annettu sama painoarvo (yhtä kuin 1), mikä itse asiassa ei välttämättä vastaa todellisuutta; siksi khin neliön tilastoa varten on tarpeen normalisoida jokainen i-th termi jakamalla se arvolla p i · N :

    Lopuksi kirjoitamme tuloksena olevan lausekkeen tiiviimmin ja yksinkertaistamme sitä:

    Olemme saaneet khin neliötestin arvon for kokeellinen tiedot.

    Pöytä 22.2 annetaan teoreettinen khin neliön arvot (χ 2 teoria), missä ν = N- 1 on vapausasteiden lukumäärä, p Onko käyttäjän määrittelemä luottamustaso, joka osoittaa, kuinka paljon RNG:n tulee täyttää yhtenäisen jakelun vaatimukset, vai p — tämä on todennäköisyys, että χ 2:n kokeellinen arvo exp. on pienempi kuin taulukoitu (teoreettinen) χ 2 -teoria. tai hänen kanssaan yhtäläinen.

    Taulukko 22.2.
    Muutama prosenttiyksikkö χ 2 -jakaumasta
    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

    Pidetään hyväksyttävänä p 10 %:sta 90 %:iin.

    Jos χ 2 exp. paljon enemmän kuin χ 2 teoria. (tuo on p- hienoa), sitten generaattori ei tyydytä tasaisen jakautumisen vaatimus, koska havaitut arvot n i mennä liian kauas teoreettisesta p i · N eikä sitä voida pitää satunnaisena. Toisin sanoen luottamusväli on niin suuri, että lukujen rajoitukset löystyvät, vaatimukset numeroille ovat heikkoja. Tässä tapauksessa havaitaan erittäin suuri absoluuttinen virhe.

    Jopa D. Knut kirjassaan "The Art of Programming" huomautti, että χ 2 exp. pienikään ei yleensä ole hyvä, vaikka se näyttää ensi silmäyksellä ihanalta yhtenäisyyden kannalta. Otetaan todellakin sarja numeroita 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 ... - ne ovat ihanteellisia tasaisuus ja χ 2 exp. on käytännössä nolla, mutta et todennäköisesti tunnista niitä satunnaisiksi.

    Jos χ 2 exp. paljon vähemmän kuin χ 2 teoria. (tuo on p- vähän), sitten generaattori ei tyydytä satunnaisen tasaisen jakauman vaatimus, koska havaitut arvot n i liian lähellä teoreettista p i · N eikä sitä voida pitää satunnaisena.

    Mutta jos χ 2 exp. on tietyllä alueella, kahden χ 2 teorin arvon välillä. jotka vastaavat esim. p= 25 % ja p= 50%, silloin voidaan olettaa, että anturin tuottamien satunnaislukujen arvot ovat täysin satunnaisia.

    Lisäksi on pidettävä mielessä, että kaikki arvot p i · N on oltava riittävän suuri, esimerkiksi enemmän kuin 5 (todettu empiirisesti). Vain silloin (riittävän suurella tilastollisella otoksella) koeolosuhteita voidaan pitää tyydyttävinä.

    Varmistusmenettely on siis seuraava.

    Tilastolliset riippumattomuustestit

    1) Tarkista numeron esiintymistiheys sarjassa

    Katsotaanpa esimerkkiä. Satunnaisluku 0,2463389991 koostuu numeroista 2463389991 ja numero 0,5467766618 numeroista 5467766618. Yhdistämällä numerosarjat saadaan: 2463389991564678646787.

    On selvää, että teoreettinen todennäköisyys p i laskeumat i-:s numero (0-9) on 0,1.

    2) Identtisten numeroiden sarjan ulkonäön tarkistaminen

    Merkitään n L peräkkäisten pituisten numeroiden sarjan lukumäärä L... Kaikki on tarkistettava L 1 - m, missä m Onko käyttäjän määrittämä numero: sarjassa esiintyvien identtisten numeroiden enimmäismäärä.

    Esimerkistä "24633899915467766618" löytyi 2 sarjaa, joiden pituus on 2 (33 ja 77), eli n 2 = 2 ja 2 sarja 3 pitkä (999 ja 666), eli n 3 = 2 .

    Sarjan esiintymistodennäköisyys, jonka pituus on L on yhtä suuri kuin: p L= 9 10 - L (teoreettinen). Eli yhden merkin pituisen sarjan todennäköisyys on: p 1 = 0,9 (teoreettinen). Kahden merkin pituisen sarjan todennäköisyys on: p 2 = 0,09 (teoreettinen). Kolmen merkin pituisen juovan todennäköisyys on: p 3 = 0,009 (teoreettinen).

    Esimerkiksi yhden merkin pituisen sarjan todennäköisyys on p L= 0,9, koska merkkejä voi olla vain yksi 10:stä ja merkkejä on yhteensä 9 (nollaa ei lasketa). Ja todennäköisyys, että kaksi identtistä symbolia "XX" esiintyy peräkkäin, on 0,1 · 0,1 · 9, eli todennäköisyys 0,1, että symboli "X" esiintyy ensimmäisessä paikassa, kerrotaan todennäköisyydellä 0,1, että sama symboli näkyy toisessa paikassa "X" ja kerrottuna tällaisten yhdistelmien lukumäärällä 9.

    Sarjan esiintymistiheys lasketaan aiemmin analysoidun "khi-neliö" -kaavan mukaisesti käyttämällä arvoja p L .

    Huomautus: generaattori voidaan tarkistaa useita kertoja, mutta tarkistukset eivät ole täydellisiä, eivätkä ne takaa, että generaattori tuottaa satunnaislukuja. Esimerkiksi generaattoria, joka antaa sekvenssin 12345678912345 ..., pidetään ihanteellisena tarkistusten aikana, mikä ei tietenkään ole täysin totta.

    Lopuksi toteamme, että Donald E. Knuthin kirjan "Ohjelmoinnin taito" (nide 2) kolmas luku on täysin omistettu satunnaislukujen tutkimukselle. Se tutkii erilaisia ​​menetelmiä satunnaislukujen generoimiseksi, tilastollisia satunnaiskriteereitä ja tasaisesti jakautuneiden satunnaislukujen muuntamista muun tyyppisiksi satunnaismuuttujiksi. Tämän materiaalin esittelyyn on omistettu yli kaksisataa sivua.

    Satunnaislukujen saaminen ja muuntaminen.

    On kaksi päätapaa saada satunnaislukuja:

    1) Satunnaisluvut luodaan erityisellä elektronisella liitteellä (satunnaislukugeneraattori), joka on asennettu tietokoneeseen. Tämän menetelmän toteuttaminen ei vaadi juuri mitään lisätoimintoja, lukuun ottamatta satunnaislukugeneraattorin käyttöä.

    2) Algoritminen menetelmä - perustuu satunnaislukujen muodostukseen itse koneessa erityisohjelman avulla. Tämän menetelmän haittana on tietokoneajan ylimääräinen kulutus, koska tällöin kone suorittaa itse elektronisen laitteen toiminnot.

    Ohjelma satunnaislukujen generoimiseksi tietyllä jakautumislailla voi olla hankala. Siksi tietyn jakautumislain mukaisia ​​satunnaislukuja ei yleensä saada suoraan, vaan muuntamalla satunnaislukuja, joilla on jonkinlainen standardijakauma. Usein tällainen vakiojakauma on yhtenäinen jakauma (saannin helppous ja mukavuus muuntaa muihin lakeihin).

    Edullisinta on saada satunnaislukuja yhtenäisellä lailla sähköisen liitteen avulla, joka vapauttaa tietokoneen tietokoneajan lisäkustannuksista. Puhtaasti tasaisen jakautumisen saavuttaminen tietokoneella on mahdotonta rajoitetun purkausverkon vuoksi. Siksi välin (0, 1) jatkuvan numerokokoelman sijaan diskreetti kokoelma 2 n numerot, missä n- konesanan bittileveys.

    Tällaisen populaation jakautumislakia kutsutaan lähes yhtenäinen ... Kohdassa n³20 yhtenäisten ja kvasiyhdenmukaisten lakien väliset erot tulevat merkityksettömiksi.

    Kvasiyhtenäisten satunnaislukujen saamiseksi käytetään kahta menetelmää:

    1) generoidaan satunnaislukuja elektronisella laitteella simuloimalla joitain satunnaisprosesseja;

    2) pseudosatunnaislukujen hankkiminen erityisillä algoritmeilla.

    Saadakseen n-numeroinen binäärisatunnaisluku ensimmäisen menetelmän mukaan mallinnetaan itsenäisten satunnaismuuttujien sarja z i, ottamalla arvoksi 0 tai 1. tuloksena oleva 0:n ja 1:n sekvenssi, jos sitä pidetään murtolukuna, ja se on satunnaisarvo kvasiyhtenäisestä jakaumasta välillä (0, 1). Laitteistomenetelmät näiden numeroiden saamiseksi eroavat toisistaan ​​vain toteutustavan suhteen z i.

    Yksi menetelmistä perustuu radioaktiivisten hiukkasten määrän laskemiseen tietyn ajanjakson aikana. Dt jos hiukkasten lukumäärä Dt vielä silloinkin z i=1 , ja jos outoa, niin sitten z i=0 .

    Toinen menetelmä käyttää tyhjiöputken meluvaikutusta. Kohinajännitteen arvon kiinnittäminen tiettyinä aikoina t i, saamme riippumattomien satunnaismuuttujien arvot U (t i), eli jännite (voltia).



    Suuruus z i lailla määrätty:

    missä a- jokin kynnysjännitteen arvo.

    Suuruus a yleensä valitaan ehdoista:

    Laitteistomenetelmän haittana on, että se ei salli kaksoisajomenetelmän avulla ohjata ongelmanratkaisualgoritmin toimintaa, koska samoja satunnaislukuja ei voida saada toistuvan ajon aikana.

    Pseudosatunnainen kutsutaan numeroiksi, jotka on muodostettu tietokoneella erityisohjelmilla toistuvasti: jokainen satunnaisluku saadaan edellisestä erityisten muunnoksilla.

    Yksinkertaisin näistä muunnoksista on seuraava. Olkoon joitain n- bitti binääriluku intervallista nÎ (0, 1). Selvitetään se, niin saamme jo 2 n bitin numero. Korostetaan keskiarvoa n päästöt. Saatu tällä tavalla n On bittiluku ja se on satunnaisluvun uusi arvo. Neulotaan uudestaan ​​jne. Tämä sekvenssi on näennäissatunnainen, koska teoreettisesta näkökulmasta se ei ole sattumaa.

    Toistuvien algoritmien haittana on, että satunnaislukujonot voivat rappeutua (esimerkiksi saamme vain nollasekvenssin tai ykkösten sarjan, tai jaksollisuus voi ilmaantua).