Hogyan lehet véletlen generátort létrehozni
On február 10, 2021 by adminHogyan lehet egy véletlen generátort megvalósítani?
Nem beszélek egy nyelv meghívásáról mathRandom () módszer, de a számok generálásához vezető rutinok megvalósítása teljesen véletlenszerű.
Megjegyzések
- I ‘ arra vállalkozik, hogy kijelentse, hogy az igaz véletlenszerűség jelenleg nem lehetséges.
- @Dynamic Szerintem ugyanaz a gondolat, bár mindig is szükség esetén véletlenszerű függvényt hívott meg, de ‘ elképzelésem sincs arról, hogyan kell egy véletlenszerű módszert megvalósítani.
- ” a teljesen véletlenszerű ” egy nagyon mély nyúllyuk.
- @Dinamikus: Valójában triviális, ha egy valóban véletlenszerű adatoktól megkülönböztethetetlen sorrendet kapunk, mindaddig, amíg hardveres támogatással tekintse meg a külvilágot. Az atom- és szubatomi fizika (atom bomlás, fotoncsapó szenzor típusú események) f a jelenlegi tudományelmélet) valóban véletlenszerű és könnyen mérhető. A nagy léptékű termodinamika annyira kaotikus, hogy véletlenszerűnek tekinthetjük, ha a makrórendszeren átvizsgáljuk a mikro skálán stb. Jó példa a digitális fényképezőgép-érzékelő zaja …..
Válasz
A valóban véletlenszerű szám kulcsa véletlenszerű adatforrás. Néha ezek olyan információk, mint a billentyűzetesemények késése vagy a hálózati események. Ahol jó minőségű véletlenszerű adatokra van szükség, radioaktív bomlás lehet. Az SGI megvalósította a lavarand alkalmazást, amely véletlenszám-generátor számára egy lávalámpa digitalizált képéből merítette az alapját. Ez elegendő volt ahhoz, hogy véletlenszám-generátort tartsanak.
Az igazán véletlenszerű adatokon kívül egy determinisztikus, de kaotikus rendszerrel lehet dolgozni. Például a mersenne twister . Ezekben a helyzetekben az egyik beírja a generátort egy számmal, majd előre futtatja, hogy ál-véletlenszerű számokat kapjon. Ezek elegendőek játékokhoz és hasonlókhoz, ahol nem kritikus, ha valaki meg tudja határozni a magot (és a sorozat következő számát).
Fontolja meg a 5.732.138 és http://www.lavarnd.org/ a szám készítésének részleteiről.
Megjegyzések
- +1 Különböző adatforrásokat vennék fontolóra, mint például a vetőmag időjárási mérése. wiki.cdyne .com /? title = CDYNE_Weather
- @ emeraldcode.com az időjárási mérésekkel járó kihívás az, hogy nem teljesen véletlenszerűek. Az időjárás előrejelzésének egy teljes mezője van. A hőmérséklet általában akkor emelkedik A tél hidegebb, mint a nyár. A hotbits rendszer két bomlási esemény véletlenszerűségét használja, amelyek kiszámíthatatlanok (mérjék az időt az 1. eseménytől a 2. eseményig, és az időt a 3. eseménytől a 4. eseményig – ha 1 : 2 == 3: 4, dobja ki az adatokat. Ha 1: 2 3: 4, a véletlen bit 0. Ha 1: 2 > 3: 4, akkor a véletlen bit 1.
beszélek szélsebességről, légköri nyomásról, hőmérsékletről, páratartalomról stb. Mérésmintát vehet, és nehezen érvelhet e tekintetben a véletlenszerűség ellen. Ezenkívül a kellő pontossággal mért hőmérséklet önmagában is nagyon véletlenszerű.
Válasz
Milyen véletlenszerűen beszélsz körülbelül?
Két fő tulajdonság van, amely matematikai értelemben meghatározza a véletlenszerűt: az első kiszámíthatatlanság és a második egyenletes eloszlás .
Ha erről beszélsz az első, szinte lehetetlen teljesen szoftveresen előállítani (és megfelelően csinálni). Van néhány módszer, például az entrópia összegyűjtése az emberi interfész eszközökről, pl. /dev/random
Linux alatt, de meglehetősen alacsony szintű entrópiát hozunk létre, hogy hasznos legyen. Mások már rámutattak néhány hardveres megvalósításra. Mindegyikük a fizika elmélet mélyén gyökerezik (mint például az a meggyőződésünk, hogy az a pillanat, amikor egy foton detektort ér el, valóban véletlenszerű). Van néhány szoftveres algoritmus erre, például a Blum-Blum-Shub . Általában ne “írjon egy PRNG-t, ha kiszámíthatatlanságra van szüksége, inkább használjon már létrehozottat . Ez különösen a kriptóhoz igaz.
A véletlenszerű függvények másik fontos tulajdonságát valójában meglehetősen könnyű kielégíteni. Sok példa van ennek, mint az RC4 , lineáris visszacsatolás-váltási nyilvántartások mögött lévő RNG-nek (ezt ténylegesen használták a kriptográfia esetében is régen, de nem találták eléggé biztonságosnak stb.Még a szokásos C könyvtár rand()
is valószínűleg jól fog működni erre a célra.
A legfontosabb: Győződjön meg arról, hogy a két tulajdonság közül melyik alapvető az Ön igényeinek. Megjósolhatatlan A PRNG-k is egyenletesen vannak elosztva, de fordítva ez nem igaz. Ezenkívül, ha valamilyen “motor” (például játékmotor) belsejében véletlenszerűséget teszünk közzé, győződjünk meg arról, hogy az emberek nem tudják a rendszert játszani, mert meglepődhet, milyen könnyű ez valójában. Például a CSS (a DVD titkosítási algoritmus) 2 LSFR-t használt kriptográfiai célokra, és meglehetősen egyszerű volt.
Válasz
Először , “nem generálhat igazán véletlenszerű számokat a szoftverben. Rengeteg különféle algoritmus létezik, amelyek segítségével ál-véletlenszerű számokat generálhat. Attól függően, hogy miért van szüksége ál-véletlenszerű számokra (azaz ha a kriptográfiában használja őket, a követelmények sok más), akkor általában valami olyat használna, mint a véletlenszám-generátor a GNU tudományos könyvtárban (amit természetesen bármilyen nyelven megvalósíthat).
Válasz
Hardver. Csatlakoznia kell olyan hardverhez, amely mindenhonnan összegyűjtheti az entrópiát … bárhonnan. Olvassa el a statikát egy rádiót, tegyen egy webkamerát egy lavalampra, vagy hagyja, hogy a felhasználói típus zabáljon vagy játsszon az egérrel. A való világgal való valamilyen érintkezés nélkül lehetetlen valódi véletlenszerűséget generálni. Ez egy fontos terület f tanulmány, és rengeteg munkát fektettek bele. Kétlem, hogy új utakat fogsz lenyűgözni, ezért valóban az óriások vállára kellene állnod és el kellene kezdened a wikipédia bejegyzéseit olvasni.
“A véletlenszerű számok generálása túl fontos ahhoz, hogy rájuk hagyják esély. “
-Robert R. Coveyou
SZERKESZTÉS
Tehát” ve ” megtudta, hogy a kívánt hardver valójában csak CMOS-chip . Olcsó kamerákban. Csak tartsa sötétben, állítsa be az érzékenységet felfelé, és nyilvánvaló, hogy az általa megfigyelt percbeli eltérések a kvantummechanikában gyökereznek, innen nyerjük az entrópiánkat a való életben.
Válasz
Legutóbb néztem meg, ami LOOOOONG régen volt, az álneves számgenerátorok (PRNG) megvalósításának kanonikus referenciája ) Knuth, 1. köt. 2, “Szeminumerikus algoritmusok” .
Még azt sem gondolja, hogy megpróbálja megvalósítani saját PRNG-jét, amíg legalább át nem nézte Knuth-ot.
Vélemény, hozzászólás?