Van olyan _KIFEJEZETTEN_ 8 bites (ál-)véletlenszám-generátor, aminek a periódusa nagyobb, mint 256?
Azt, hogy kifejezetten 8 bites, úgy értem, hogy nem pl. úgy oldjuk meg a dolgot egyszerűen, hogy veszünk egy 32 bites álvéletlenszám-generátort, és levágjuk a kimenet felső 24 bitjét...
Hanem aminek az implementációja csak 8 bites változókat használ, amit egy 8 bites rendszerre is könnyű implementálni.
Ennyi hülyeség nem is tudom, hogy férhet bele egyetlen kérdésbe?
Periódus,
álvéletlenszám generátor,
levágni a kimenet felső 24 bitjét,
8 bites változók,
8 bites rendszerre implementálni?
Üdv!
Kissé mintha műveletlennek tetszene lenni... -.- de arcoskodás viszont van.
No, tessék egy kicsit olvasni, mikről is van szó a kérdésben:
álvéletlenszám generátor : [link]
periódus:
8 bites változók: pl. C-ben egy unsigned char típusú változó (egy normális rendszeren) szerinted micsoda?
8 bites rendszerre implementálni:
levágni a kimenet felső 24 bitjét:
vegyük példának az alábbi két sornyi C kódot:
int value = 0xDEADBABE;
char out = value & 0xFF;
Na, itten szerinted mi is történik? ... Na akkor...
Öreg, aki itt műveletlen, az te vagy.
Ha csak feleannyit értenél ahhoz, amit itt összehordtál, akkor
1. Nem írtál volna ennyi sok baromságot.
2. Magad képes lennél a saját kérdésed megválaszolására, kivánalmad kielégítésére. Még hozzá, kisujjból.
Úgy gondolom, te itt csak tetszelegni akarsz. Hozzáértőnek látszani.
Ez a másfél pipás hülye még mindig jár ide? ... Nem tudom értelmes magyar mondatokat hogyan nem tud értelmezni. És nem értem miért hiszi, hogy valakinek tudnia kéne RNG-t írni 8 biten...
Na de a kérdésedre. Van több is, mondhatni elég sok, például itt van ez:
Elég magas periódossal rendelkezik 8 bithez képest.
A hátránya az összes ilyennek, hogy megbuknak a cybersecurity jellegű teszteken, vagyis nem tudnak eléggé véletlenszerű számokat adni 8 biten, több lehet bennük az ismétlődés.
Ez nem tudom mennyire probléma neked, de ezt nem említetted a kérdésben, így feltételezem hogy együtt tudsz élni ezzel.
Amiből problémád lehet még, hogy a seed-et hogyan válaszd meg. Mivel feltételezem egy alap egyszerű mikrokontrollerről van szó, nem könnyű jól választani. Sokan szoktak időt lekérdezni, és az alapján beállítani, de az ilyen rendszeren nem fog menni, mert csak reset óta eltelt időt tud adni, ami viszont determinisztikus lesz a rendszeren. Ha van rá mód, és szeretnéd hogy ne ugyanaz a számsorrend jönnön ki mindig, esetleg egy külső inputot próbálj rákötni - például egy gomb, és amikor megnyomod, akkor inicializálja újra az indítás óta eltelt ciklusok számával (ami nyilván 0 és 255 között lesz és folyton túlcsordul, de nagyjából egyenletes eloszlású). Feltéve ha van módszered clk counter lekérdezésre/tárolásra.
Az, hogy két sor, nem olyan sokat nyom a latban, gépi kódra fordítva több utasítás. A lényeg, hogy valami matematikus-féle ember talált egy ilyen mintát, hogy ezekkel a műveletekkel mi érhető el.
A seedre pedig: ha ezt a kódot lefuttatod 45-ször, akkor 45-ször ugyanazt a sorozatot fogja visszaadni.
Hogy ne ez legyen, az x,y,z és a nevű paramétert átállíthatod bármi másra, ennek függvényében fog kiadni sorozatokat. Mivel ez 256^4 variáció, ennyiféle sorozatot (is) tudsz belőle létrehozni.
Ha ezt algoritmikusan változtatni tudod indulásonként, akkor pedig mindig más értékeket fog adni.
Javaslom, először a windows-odon egy egyszerű programmal (lényegében a példakóddal) próbálgasd, ugyanarra és más kezdőértékekre.
A xor műveletek csodája... Mindig lehet vele érdekes matematikai dolgokat összerakni. Ennél csak a modulo operátort szeretem jobban :D
C64 -re fejlesztesz valami titkosító programot?
Szerintem nem éri meg. :D
😠
Miért tűntek el innét egyes válaszok?!
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!