Egy 0-255 tartományt hogyan tudok feltölteni véletlenszerűnek kinéző, de nem véletlen IGEN/NEM értékekkel?
Ehhez van egy darab paraméterem, szintén 0-255.
Tehát, ha például ez a paraméter nulla, akkor az első érték legyen pl. NEM, a következő IGEN, aztán megint IGEN, és így tovább, látszólag véletlenszerűen sorban a 256 érték. Ha a paraméter egy másik szám, akkor más, de szintén IGEN/NEM értékek, amelyek nem az előző eltolása, hanem másféle minta.
Úgy szeretném, ha ezek az értékek külön-külön számíthatóak lennének, tehát ne kelljen sorrendben számolni őket, és lehetőleg ne legyen nagy számítási igénye.
Megoldható ez így?
A peszudorandom generátorok, amik az összes nyelvhez elérhetőek, pont ezt csinálják.
Nyitott kapukat döngetsz.
Ha ez egy feladat, hogy mindenképp írj sajátot (értelme nincs, de gyakorlásnak jó), akkor én ezt csinálnám:
A paraméternek (legyen most 10) vesszük az MD5 hashét:
d3d9446802a44259755d38e6d163e820
Ezzel kaptunk 128 bitet (a hexadecimális számot binárisként értelmezve ez 128 db 1-es vagy 0).
A paraméterből képezz egy másik számot/stringet/akármit. A példa kedvéért most utána írom, hogy "random".
"10random" hashelve:
860b931a023f99eefb28976d0d31cf4a
Így már összesen 256 bited van, pont amennyit szeretnél.
Ahol nulla van, az lesz a NEM, ahol 1-es, az lesz az IGEN.
A bemeneteddel(szám 0-255 közt) seedeld meg a random szám generátorodat.
Ezután generálj 256 darab booleant véletlenszerüen.
így egy konkrét paraméterre mindíg ugyanazt a véletlen sorozatot fogja elöállítani
itt egy python példa:
import random
parameter = 25 # lehet akármi más
random.seed(parameter)
print([random.choice(["IGEN", "NEM"]) for _ in range(256)])
Közben én is rájöttem, hogy a véletlenszám generátor lesz a megoldás.
Sajnos nem lehet beépítettet használni, az másra is kell.
Valószínűleg egy egyszerű szorzós/összeadós generátor is jó itt, csak a túlcsordulásra kell vigyázni.
"Közben én is rájöttem, hogy a véletlenszám generátor lesz a megoldás."
Mondjuk ez annyira nem meglepő.
"Sajnos nem lehet beépítettet használni, az másra is kell."
Ugye Te is érzed, hogy ennek az égvilágon semmi értelme.
"Valószínűleg egy egyszerű szorzós/összeadós generátor is jó itt, csak a túlcsordulásra kell vigyázni"
Nem lesz jó, nagyon nem fog még csak véletlennek sem tűnő értékeket sem generálni, ha Te találsz ki egy algoritmust.
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!