Kuinka luoda satunnaisgeneraattori
On helmikuu 10, 2021 by adminKuinka satunnainen generaattori voidaan toteuttaa?
En puhu kielen kutsumisesta mathRandom () -menetelmä, mutta niiden numeroiden luomiseen johtavien rutiinien toteutus on täysin satunnainen.
Kommentit
- I ’ rohkaisee sanoa, että tosi satunnaisuus ei ole tällä hetkellä mahdollista.
- @Dynamic Mielestäni sama ajatus on kuitenkin aina kutsui satunnaisfunktion tarvittaessa, mutta minulla ei ole ’ ajatusta siitä, miten satunnainen menetelmä tulisi toteuttaa.
- ” täysin satunnainen ” on hyvin syvä kaninreikä.
- @Dynamic: On todella triviaalia saada sekvenssi, jota ei voida erottaa todella satunnaisista tiedoista, kunhan katse ulkomaailmaan laitteistotukea käyttäen. Atomi- ja subatomisfysiikka, (atomien hajoaminen, fotoneihin osuvia antureita sisältävät tapahtumat) on nykyinen tiedeteoria) todella satunnainen ja helppo mitata. Laajamittainen termodynamiikka on niin kaoottista, että voimme pitää sitä satunnaisena, kun tarkastamme makrosysteemiä mikroskaalalla jne. Digitaalikameran anturin melu on hyvä esimerkki …
Vastaus
Aivan satunnaisen luvun avain on satunnainen tietolähde. Joskus tämä on esimerkiksi viivästyksiä näppäimistötapahtumissa tai verkkotapahtumissa. Jos halutaan korkealaatuista satunnaisdataa, se voi olla radioaktiivinen hajoaminen . SGI toteutti lavarandin , joka veti siemenensä satunnaislukugeneraattorille laavalampun digitoidusta kuvasta. Tämä riitti pidettäväksi satunnaislukugeneraattorina.
Todella satunnaisten tietojen lisäksi voidaan työskennellä deterministisen mutta kaoottisen järjestelmän kanssa. Esimerkiksi mersenne twister . Näissä tilanteissa yksi siementää generaattorin luvulla ja ajaa sen sitten eteenpäin saadakseen näennäissatunnaisluvut. Nämä riittävät peleihin ja vastaaviin, joissa ei ole kriittistä, jos joku pystyy määrittämään siemenen (ja sarjan seuraavan numeron).
Harkitse patentin 5.732.138 ja http://www.lavarnd.org/ lukun toteuttamiseen liittyvistä yksityiskohdista.
Kommentit
- +1 Harkitsen erilaisia tietolähteitä, kuten siemenesi säämittauksia. wiki.cdyne .com /? title = CDYNE_Weather
- @ emeraldcode.com säämittausten haaste on se, etteivät ne ole täysin satunnaisia. Sääennusteista on koko kenttä. Lämpötilalla on tapana nousta silloin Talvi on kylmempi kuin kesä. Hotbits-järjestelmä käyttää kahden arvaamattoman hajoamistapahtuman ajoituksen satunnaisuutta (mittaa aika tapahtumasta 1 tapahtumaan 2 ja aika tapahtumasta 3 tapahtumaan 4 – jos 1) : 2 == 3: 4, heitä tiedot pois. Jos 1: 2 3: 4, satunnaisbitti on 0. Jos 1: 2 > 3: 4, satunnaisbitti on 1.
- ’ m puhun tuulen nopeudesta, ilmanpaineesta, lämpötilasta, kosteudesta jne. Voit ottaa näytteen mittauksista ja sinulla on vaikeuksia väittää satunnaisuutta vastaan tältä osin. Pelkästään riittävän tarkasti mitattu lämpötila on hyvin satunnainen.
Vastaa
Millaista satunnaista puhut about?
On olemassa kaksi pääominaisuutta, jotka määrittävät satunnaiset matemaattisessa mielessä: ensimmäinen on arvaamaton ja toinen on yhtenäinen jakauma .
Jos puhut uudelleen ensimmäinen on yleensä lähes mahdotonta tuottaa sitä kokonaan ohjelmistojen sisällä (ja tehdä se oikein). On joitain tapoja, kuten entropian kerääminen ihmisen rajapintalaitteista, esim. /dev/random
Linuxissa, mutta luomme melko alhaisen määrän entropiaa hyödyllisenä. Toiset ovat jo osoittaneet joitain laitteistototeutuksia. Heillä kaikilla on juuret syvällä fysiikan teoriassa (kuten uskomme, että tarkka hetki, jolloin fotoni osuu detektoriin, on todella satunnainen). Tätä varten on joitain ohjelmistoalgoritmeja, kuten Blum-Blum-Shub . Yleensä älä kirjoita PRNG: tä, jos tarvitset arvaamattomuutta, vaan käytä vakiintunutta . Tämä pätee erityisesti salaukseen.
Satunnaisfunktioiden toinen tärkeä ominaisuus on itse asiassa melko helppo tyydyttää. On monia esimerkkejä tästä, kuten RC4 : n, lineaarisen palautteen siirtorekisterien takana oleva RNG (tätä käytettiin todella salaus myös kerran, mutta sen ei todettu olevan riittävän turvallinen) jne.Jopa tavallinen C-kirjasto rand()
toimii todennäköisesti hyvin tähän tarkoitukseen.
Tärkeintä: Varmista, että tiedät, mikä näistä kahdesta ominaisuudesta on välttämätön tarpeellesi. Arvaamaton Myös PRNG: t ovat jakautuneet tasaisesti, mutta päinvastoin ei ole totta. Jos paljastat satunnaisuuden jonkinlainen ”moottori” (kuten pelimoottori), varmista, että ihmiset eivät voi pelata järjestelmää, koska saatat olla yllättynyt siitä, kuinka helppoa se todella on. Esimerkiksi CSS (DVD-salausalgoritmi) käytti 2 LSFR: ää salaustarkoituksiin ja se oli melko helposti rikki.
Vastaus
Ensimmäinen , et voi luoda todella satunnaisia lukuja ohjelmistoissa. On olemassa useita erilaisia algoritmeja, joiden avulla voit luoda näennäissatunnaisia numeroita. Riippuen siitä, miksi tarvitset näennäissatunnaisia numeroita (ts. jos käytät niitä salauksessa, vaatimukset ovat paljon eri), käytät yleensä jotain esimerkiksi satunnaislukugeneraattoria GNU: n tieteellisessä kirjastossa (jonka voit tietysti toteuttaa haluamallasi kielellä).
Vastaa
Laitteisto. Sinun on muodostettava yhteys laitteistoon, joka voi kerätä entropiaa mistä tahansa. Lue staattinen radio, aseta verkkokamera lavalampulle tai pyydä käyttäjätyyppiä höpöttämään tai pelaamaan hiirellä. Todellisen satunnaisuuden tuottaminen on mahdotonta ilman todellista yhteyttä todelliseen maailmaan. Se on tärkeä alue o tutkimukseen, ja siihen on tehty paljon työtä. Epäilen, että tulet loistamaan uusia polkuja, joten sinun pitäisi todella seisoa jättiläisten harteilla ja alkaa lukea wikipedian merkintöjä.
”Satunnaislukujen luominen on liian tärkeää, jotta sitä ei jätettäisi mahdollisuus. ”
-Robert R. Coveyou
MUOKKAA
Joten minä” ve oppinut, että haluamasi laitteisto on itse asiassa vain CMOS-siru . Lajittelu halvoissa kameroissa. Pidä se vain pimeässä, aseta herkkyys tie ylöspäin, ja ilmeisesti sen havaitsemien minuuttivarianssien juuret ovat kvanttimekaniikassa, josta me johdamme entropiamme tosielämässä.
vastaus
Viime kerralla katsoin, LOOOOONG aikaa sitten, kanonista viittausta näennäissatunnaislukugeneraattoreiden käyttöönottoon (PRNG ) on Knuth, Vuosikerta 2, ”Seminumerical Algorithms” .
Älä edes ajattele yrittämäsi toteuttaa omaa PRNG: täsi, kunnes olet ainakin tarkastellut Knuthia.
Vastaa