Kysymys:
Mitä eroja rand () -funktion ja RNG (Random number generator) -perifeerisen välillä on?
Roh
2014-04-08 22:00:29 UTC
view on stackexchange narkive permalink

Ihmettelen RNG: n (satunnaislukugeneraattori) oheislaitetta STM32F4XXXX-keskusyksiköissä. katso tämä käyttöopas (sivu 748). Toisaalta meillä on rand () -funktio stdlib-kirjastossa, jotka suorittavat saman tehtävän. Nyt minulla on kaksi kysymystä:

  1. Mitkä ovat erot (etu ja haitta) rand () -funktion ja RNG (Random number generator) -oheislaitteiden välillä?
  2. Katso tätä osaa :

features

Selitä molemmat vaihtoehdot (etenkin toinen vaihtoehto).

Neljä vastused:
Mishyoshi
2014-04-08 22:37:43 UTC
view on stackexchange narkive permalink

Dave'n vastaus jatkuu melko hienosti, mutta selventää hieman enemmän toisesta vaihtoehdosta:

todellinen laitteiston satunnaislukugeneraattori käyttää fyysistä entropialähdettä. Tällainen entropialähde voi olla kosminen säteily, sähkömelu, käänteisjännitetyn diodin (tai BJT-transistorin) avanlanche-vaikutus, chua-piiri jne. Mitä vähemmän deterministinen entropialähde, sitä parempi on satunnaisen lähdön laatu. Ihanteellinen entropialähde olisi käyttää kvanttifysiikan vaikutusta tai jotain, jota ei voida mallintaa deterministisillä yhtälöillä.

Toinen tärkeä tekijä satunnaislukugeneraattoreiden kanssa on, että entropialähde voi tuottaa vain rajoitetun määrän entropiaa ajan yksikköä kohti. Hyvä esimerkki on chua-piiri: vaikka se on melko satunnainen, sillä on erittäin huono nopeus eikä sitä voida käyttää tosielämän sovelluksiin.

Monissa prosessoreissa / mikro-ohjaimissa, joissa on sisäänrakennetut RNG: t, kello Drift 2-4: een, jotka on tarkoituksellisesti väärin synkronoitu, käytetään. Sitten he käyttävät sekä analogisia että digitaalisia suodattimia satunnaistamaan kuvion entistä enemmän ja siirtämään tuloksen rekisteriin. Tällaisen suodatuksen suorittaminen vaatii muutaman jakson, mikä selittää tietyn kellon vaadittavien jaksojen vähimmäismäärän, ennen kuin uudempi arvo on käytettävissä.

Kellon ajautuminen ei ole aivan kvanttiefekti, joten se voidaan mallintaa, mutta se on tarpeeksi satunnainen, koska se riippuu monista parametreista, kuten lämpötilasta, piiprosessista, toimintataajuudesta, sähköisestä kohinasta, taustasäteilystä jne.

Sovelluksissa, joissa laitteiston RNG: llä ei ole riittävää suoritustehoa (kuten erittäin vaativissa salaussovelluksissa), on melko yleistä käyttää laitteiston RNG: tä siemenenä näennäissatunnaislukugeneraattorille, kuten rand () -funktiolle. sdtlib. Tällainen sovellus tarjoaa kuitenkin yleensä paremman randin () toteutuksen, joka on erityisesti suunniteltu toimimaan siemenestä, joka voidaan usein hylätä true satunnaisarvoilla. Uudemmissa Intel-prosessoreissa, joissa on integroidut laitteisto-RNG: t, näennäissatunnaisalgoritmiosa on integroitu suoraan piiin, joten se suoritetaan laitteistolla, mikä tuottaa erittäin korkean satunnaisen läpimenon.

Jos mieltä olet randista () itse menetelmä, se on vain metemaattinen lauseke, joka on suunniteltu tuottamaan riittävän suuri määrä entropiaa. Riittävän suuri riippuen sovelluksesta: salausavainten sukupolvien satunnaisuuden on oltava korkealaatuisempaa kuin suosikkimusiikkisoittimesi yksinkertaisen satunnaistoiston edellyttämä satunnaisuus. On selvää, että mitä korkeampi satunnaislähdön laatu, sitä korkeammat satunnaisluvun laskennalliset kustannukset ovat.

Satunnaislukuun sisältyvät toiminnot ovat melko samanlaisia ​​kuin MD5-hashin laskemisessa. tiedosto: he yrittävät käyttää eräänlaista bittivyöryvaikutusta niin, että siemenarvon yhden bitin muutos muuttaa koko generointikuvion. Sivuhuomautuksena en suosittele MD5: n käyttöä näennäissatunnaislukugeneraattorina; se oli vain esimerkki. Se olisi sekä tehotonta että ei niin satunnaista, mutta asia on siinä: jos syötät saman tiedoston MD5-algoritmiin, saat aina saman deterministisen lähdön, melkein samalla tavalla kuin saisit aina saman tuloksen rand () -funktio, jos syötät saman siemenen, ellet toteutus riippu mielivaltaisista elementeistä, kuten nykyisestä ajasta.

Dave Tweed
2014-04-08 22:11:49 UTC
view on stackexchange narkive permalink

Tärkein ero on, että kirjastofunktio rand () on näennäissatunnainen numerogeneraattori - tietyn aloitusarvon (siemen) perusteella se tuottaa aina saman sarjan Toisaalta RNG-oheislaite on todellinen satunnaislukugeneraattori, ja se tuottaa toistamattomia numerosarjoja.

Kiitos. ja molemmat vaihtoehdot ..?
Mitä "ja molemmat vaihtoehdot ..?" tarkoittaa? Onko kysymys?
Tom L.
2014-04-08 22:46:01 UTC
view on stackexchange narkive permalink

Kahta hahmottelemasi aihetta voidaan kuvata suhteellisen helposti:

  • 1: Et voi luoda satunnaislukuja nopeammin kuin kerran 40 kellosyklissä, joten tuloksena on 48MHz / 40 = ~ 1M näyte / s
  • 2: Laitteisto sisältää näytön, joka tarkistaa jokaisen luodun numeron kummallisesta käyttäytymisestä. Esim. jos käytit lämpötilaa lähteenä ja sinulla oli erittäin vakaa lämpötilaympäristö, voi tapahtua, että RNG tuottaa uudelleen saman numerosekvenssin uudelleen (kuten näennäissatunnaislukugeneraattori tekisi, jos aloitat samalla siemenarvolla). Komponentti valvoo tätä ja antaa sinulle signaalin, jos RNG toimii odotetulla tavalla. Jos tarvitset numeroidesi "todella" satunnaisia, sinun kannattaa tarkkailla tätä lippua nähdäksesi, ovatko ne todella. Kuinka tarkasti tämä tehdään ja miten RNG todella toimii, annetaan todennäköisesti jäljellä olevassa tekstissä.
supercat
2014-04-08 23:03:18 UTC
view on stackexchange narkive permalink

Oletetaan, että suunnitellaan mekaaninen rulettipyörän kiekko, joka virtaa moottoriin tietyn ajan, odottaa pyörän ja pallon lepäämistä ja tarkkailee, missä taskussa pallo on. Normaalisti jokaisen pallon pyörityksen jälkeen ja pyörä päätyvät hieman eri paikkaan, ja pienet vaihtelut pallon sijainnissa yhden pyöräytyksen jälkeen voivat vaikuttaa valtavasti siihen, mihin se päätyy seuraavalla kierroksella. Siten, vaikka moottori olisi aina jännitteellä saman ajan, tasku, jossa pallo laskeutuu yhdelle pyöritykselle, on riippumaton siitä, mihin se laskeutui aikaisemmin.

Oletetaan kuitenkin nyt, että harvoissa numeroissa on tai niissä on pieniä syvennyksiä, ja moottorin laakereissa on tasaisia ​​pisteitä. Sitten jotkut pyöräytykset olisivat satunnaisia, mutta pyöräytyksen jälkeen, joka johtaa pallon laskeutumiseen syvennykseen ja laakerin tasaiselle paikalle, seuraava pyörii voi hyvinkin olla puolueellinen kohti samaa tulosta kuin viimeinen pyöri, missä se tapahtui. Jos suurin osa pyörii ei osu samanaikaisesti osaan ja tasaiseen paikkaan, niiden olemassaolo ei todennäköisesti vaikuta asioihin liikaa. Toisaalta, jos yksi divot / flat-yhdistelmä sattuu olemaan aivan oikeassa paikassa niin, että pallo siellä kohtuudella johdonmukaisesti laskeutuu sekunnin kohdalle ja että toinen sattuu sijoittamaan pallon takaisin ensimmäiselle, päätyä erittäin vinoon käyttäytymiseen.

Jos seuraava spin on 4: n ja 23: n laskeutumisen jälkeen, se ei välttämättä osoita ongelmaa. 4: n pitäisi esiintyä noin 1/38 ajasta tässä tilanteessa. Lisäksi satunnaisdatan hankkimisen pitäisi vain kaapata taskunumero, koska ei ole mitään hyödyllistä siitä, kuinka usein pallon tulisi levätä taskussa. Siitä huolimatta voi olla hyödyllistä, että mikä tahansa, joka tallentaa numeroita, myös "tarkkailla" missä taskussa pallo pysähtyy ja tarkkailla mahdollisia epätavallisia kuvioita. Sijaintien jakauma voisi olla vinossa eteen tai taakse osoittamatta ongelmaa, mutta jos jakaumassa on kapea piikki, joka saattaa olla huolestuttava.

Jos satunnaisgeneraattorin peräkkäiset lukemat ovat tilastollisesti em> itsenäinen , ennakkoluulojen kompensointi ei ole vaikeaa (vaikka tarvittava aika on epämääräinen). Jos generaattori kuitenkin putoaa tilaan, jossa lukemat eivät ole riippumattomia (esim. Yllä olevan pyörän syklinen tila), kompensointi tulee periaatteessa mahdottomaksi - siten tarve laitteisto-RNG: lle sisällyttää piirit tällaisen käyttäytymisen havaitsemiseksi.



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...