web.cs.elte.huweb.cs.elte.hu/.../markus/infovalszam/velszamgen.docx · web viewazt, hogy egy...

13
A következőkben véletlen számok generálásával fogunk foglalkozni. Ezek az általunk készített számok valójában ál- (pszeudo-)véletlenszámok”, hiszen egy meghatározott szabály szerint képezzük őket egy adott véletlen kezdőértékből, a „ magból”. (Ezt általában a számítógép órája alapján képzik). Lehetne „igazi” véletlen számokat is generálni a radioaktív bomlást vagy a kvantumfizika egyéb jelenségeit használva, de ezek vagy nem volnának kellően hatékonyak, vagy megvalósításuk ütközik technikai nehézségekbe. A véletlen számokat általában 2-es számrendszerben adjuk meg, azaz véletlen 0,1 sorozatokkal. Mikor jó egy véletlenszám- generátor? Könnyebb azt definiálni, hogy mikor rossz: akkor mondjuk, hogy feltörhető, ha elegendő tag (mondjuk az első n ) ismeretében valaki hatékony számolással, azaz polinomiális idő alatt meg tudja mondani vagy legalábbis tippelni, hogy mi lesz a sorozat következő tagja. Ha valaki fel akarja törni a generátorunkat, akkor 1/2 esélye biztos van rá, hogy eltalálja a következő jegyet (a korábbi jegyektől teljesen függetlenül, pénzfeldobással tippelhet). Azt akarjuk, hogy ennél sokkal nagyobb esélye ne is legyen: azaz polinomiális idő alatt senki se tudja megtenni. Azt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni. Az egyik első képzési módot Neumann János adta meg: legyen pl. a mag x 1 = 10101001 , képezzük ennek a négyzetét, és vegyük ki a középső 8 számjegyet, ez lesz

Upload: others

Post on 01-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: web.cs.elte.huweb.cs.elte.hu/.../markus/InfoValszam/Velszamgen.docx · Web viewAzt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni

A következőkben véletlen számok generálásával fogunk foglalkozni. Ezek az általunk készített

számok valójában „ ál- (pszeudo-)véletlenszámok”, hiszen egy meghatározott szabály szerint

képezzük őket egy adott véletlen kezdőértékből, a „ magból”. (Ezt általában a számítógép órája

alapján képzik). Lehetne „igazi” véletlen számokat is generálni a radioaktív bomlást vagy a

kvantumfizika egyéb jelenségeit használva, de ezek vagy nem volnának kellően hatékonyak,

vagy megvalósításuk ütközik technikai nehézségekbe.

A véletlen számokat általában 2-es számrendszerben adjuk meg, azaz véletlen 0,1 sorozatokkal.

Mikor jó egy véletlenszám-generátor? Könnyebb azt definiálni, hogy mikor rossz: akkor

mondjuk, hogy feltörhető, ha elegendő tag (mondjuk az első n ) ismeretében valaki hatékony

számolással, azaz polinomiális idő alatt meg tudja mondani vagy legalábbis tippelni, hogy mi

lesz a sorozat következő tagja. Ha valaki fel akarja törni a generátorunkat, akkor 1/2 esélye

biztos van rá, hogy eltalálja a következő jegyet (a korábbi jegyektől teljesen függetlenül,

pénzfeldobással tippelhet). Azt akarjuk, hogy ennél sokkal nagyobb esélye ne is legyen: azaz

polinomiális idő alatt senki se tudja megtenni.

Azt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű

ellenőrizni. Az egyik első képzési módot Neumann János adta meg: legyen pl. a mag x1 =

10101001 , képezzük ennek a négyzetét, és vegyük ki a középső 8 számjegyet, ez lesz x2 , majd

hasonlóan folytassuk az eljárást x2 -vel és így tovább. Ez a módszer azonban nem volt jó, mivel

viszonylag könnyen fel lehetett törni (sok esetben nagyon hamar periodikussá vált a sorozat).

Egy másik módszer a , vagy általánosabban (ahol az x mag egy viszonylag kicsi pozitív

egész szám) számjegyeinek a felhasználása, ami ugyan soha nem lesz periodikus, de más

okokból ugyancsak nem megfelelő. A gyakorlatban legtöbbet használt generátor a

kongruenciális generátor a következőképpen működik: legyen x a mag, A, B, illetve N pozitív

egészek, és xi=(Axi-1+B) mod N . Ez az eljárás könnyen programozható, gyors, és általában jó

eredményt ad, de a fenti szigorú elméleti követelményeknek nem felel meg (vagyis feltörhető).

Annál meglepőbb, hogy van ilyen értelemben „jó” véletlenszám-generátor is. Ehhez be kell

vezetnünk az egyirányú függvény fogalmát: Legyen f: N -› N egy-egyértelmű függvény, f -et

egyirányúnak nevezzük, ha f hatékonyan kiszámítható, de f-1 nem. A Goldreich–Levin féle

Page 2: web.cs.elte.huweb.cs.elte.hu/.../markus/InfoValszam/Velszamgen.docx · Web viewAzt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni

generátor egy ilyen egyirányú függvényt használ, és erről be lehet bizonyítani, hogy ezt a

sorozatot nem lehet feltörni polinomiális idő alatt.

Page 3: web.cs.elte.huweb.cs.elte.hu/.../markus/InfoValszam/Velszamgen.docx · Web viewAzt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni

Inverz eloszlásfüggvény módszer

Tétel: Legyen X val. vált., F(x) eloszlásfüggvénnyel, amely monoton növekedő és folytonos.

Ekkor

i. F(X) egyenletes eloszlású [0,1] –en

ii. Ha U ~ U(0,1) akkor F-1(U) eloszlásfüggvénye F(x) .

Pl.: Ha X ~ exp(λ) => F(x)=1-exp(- λx), => F-1(x)= -ln(1-x)/λ

-ln(1-U)/ λ ~ exp(λ), ahol U ~U(0,1)

Kiterjesztése: általánosított inverz: F-1(x)= inf{x | F(x)=y}

Page 4: web.cs.elte.huweb.cs.elte.hu/.../markus/InfoValszam/Velszamgen.docx · Web viewAzt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni

Elfogadás – elutasítás (Accept-reject) algoritmus

Legyen f(x) tetszıleges sűrűségfüggvény,g(x) pedig olyan sűrűségfüggvény, amelyre f(x) <

Mg(x), valamely M>1 esetén és g(x)-ből könnyen tudunk mintát venni (tipikus példa az

egyenletes eloszlás).

Algoritmus:

1. Vegyünk mintát: u~U(0,1) -ből, x~g(x) -ből

2. Ha u<f(x)/Mg(x), akkor x-et elfogadjuk

3. Különben elutasítjuk, és 1-be lépünk.

Page 5: web.cs.elte.huweb.cs.elte.hu/.../markus/InfoValszam/Velszamgen.docx · Web viewAzt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni
Page 6: web.cs.elte.huweb.cs.elte.hu/.../markus/InfoValszam/Velszamgen.docx · Web viewAzt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni
Page 7: web.cs.elte.huweb.cs.elte.hu/.../markus/InfoValszam/Velszamgen.docx · Web viewAzt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni
Page 8: web.cs.elte.huweb.cs.elte.hu/.../markus/InfoValszam/Velszamgen.docx · Web viewAzt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni
Page 9: web.cs.elte.huweb.cs.elte.hu/.../markus/InfoValszam/Velszamgen.docx · Web viewAzt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni
Page 10: web.cs.elte.huweb.cs.elte.hu/.../markus/InfoValszam/Velszamgen.docx · Web viewAzt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni
Page 11: web.cs.elte.huweb.cs.elte.hu/.../markus/InfoValszam/Velszamgen.docx · Web viewAzt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni
Page 12: web.cs.elte.huweb.cs.elte.hu/.../markus/InfoValszam/Velszamgen.docx · Web viewAzt, hogy egy generátor megbízható-e ebben az értelemben, egyáltalában nem könnyű ellenőrizni