Véletlenszám-generálás elutasításos módszerrel Poisson- eloszlás esetén

 

A segédprogramot Sass Enikõ írta.


A matematikai háttér:


Az elutasításos módszer egy hatékony, általánosan használt eljárás véletlen eltérések generálására, melyek p(x)dx sûrûségfüggvénye (egy érték x és x+dx közötti elõfordulásának valószínûsége) ismert és kiszámítható.

Rajzoljuk meg a grafikonját a p(x) sûrûségfüggvénynek, melyet generálni akarunk, így x bármely tartományában a görbe alatti terület megfelel az adott x elõállításához tartozó valószínûségnek. Ha lenne olyan módszerünk, mellyel a görbe alatti területen (két dimenzióban) egyforma valószínûséggel kiválasztanánk egy véletlen pontot, akkor ezen pont x értéke a kívánt eloszlást mutatná.
Most ugyanerre az ábrára rajzoljunk egy másik, f(x) görbét, mely véges területet határol és mindenütt az eredeti valószínûségi eloszlás fölé esik. (Ez mindig lehetséges, mivel az eredeti görbe, a valószínûség definíciója szerint csak egységnyi területet zár be.) Ezt az f(x)-et összehasonlító függvénynek nevezzük. Tegyük fel, hogy rendelkezünk olyan módszerrel, mellyel egyenlõ valószínûséggel határozhatunk meg véletlen pontot az összehasonlító függvény területe alatt (két dimenzióban). Amikor ez a pont az eredeti valószínûségi eloszlás alatti területen kívül esik, akkor elutasítjuk és egy másik véletlen pontot választunk. Amikor a pont az eredeti valószínûségi eloszlás alatti területre esik, akkor elfogadjuk. Nyilvánvaló, hogy az elfogadott pontok egyenletesek az említett területen, így x értékük a kívánt eloszlással rendelkezik. Látható, hogy a visszautasított pontok hányada csupán a két függvény alatti terület arányán múlik és nem a függvények alakján. Az elfogadott és visszautasított pontok aránya megegyezik a p alatti terület, valamint a p és f közötti terület arányával.
Hogyan válasszunk az f(x) összehasonlító függvény területe alatt (két dimenzióban) egyenletes véletlen számot? Bizonyosodjunk meg róla, hogy az általunk választott összehasonlító függvény határozatlan integrálja analitikusan ismert, valamint analitikusan át is alakítható, hogy megadja x- et "az összehasonlító függvény alatti terület x-tõl balra esõ része" függvényeként. Most válasszunk egy 0 és A közötti egyenletes eltérést, ahol A az f(x) alatti teljes terület, hogy megfelelõ x-et kapjunk. Ezután válasszunk 0 és f(x) között is egyet, mint a kétdimenziós pont y értéke. Belátható, hogy az (x,y) pont egyenletes eloszlású az f(x) összehasonlító függvény alatt.
Természetesen ezt az eljárást átlagosan A-szor kell megismételni, mielõtt a végsõ eltérést megkapnánk.

A Poisson- eloszlás kapcsolatban van a gamma- eloszlással. A Poisson- eloszlás megadja egy m egész számhoz tartozó, vélelen Poisson események bekövetkezésének valószínûségét adott x idõintervallum esetén. Míg a gamma- eloszlás annak a valószínûségét adja meg, hogy az m-dik eseményhez tartozó várakozási idõ x és x+dx közé esik.
Nagy x értékek esetén az eloszlás közelítõleg "harang alakú" (bár kis lépcsõkbõl áll).
Kicsi x értékekre generálhatunk független exponenciális eltéréseket (események közötti várakozási idõ). Amikor ezek összege elõször meghaladja x- et, akkor ismertté válik azon események száma, melyek x várakozási idõ alatt bekövetkeznének és ez eggyel kevesebb, mint az összegzett tagok száma.
A Poisson- eloszlás általános alkalmazása: az adott idõszak alatt bekövetkezõ események becslése.

A véletlen számot generáló függvény:
FUNCTION poidev(xm, idum)

 

A subroutine használata és meghívása

Bemenõ adat:

Kimenõ adat:

A program felhasználja a már említett ran1 véletlenszám- generáló függvényt, mely egy 0 és1 közötti véletlen eltéréssel tér vissza.
FUNCTION ran1(idum)

Bemenõ adat:

Ezenkívül felhasználja még a gammln függvényt, mely természetes alapú logaritmust számol, s itt xm a bemenõ értéke, azt alakítja át.
FUNCTION gammln(xx)

Bemenõ adat:

 

Példa a segédprogram használatára:

PROGRAM teszt
INTEGER idum,n,j
REAL xm,p,xx
write(*,*)'n:'
read(*,*)n
write(*,*)'xm(valos):'
read(*,*)xm
p=poidev(xm,idum) <- itt adjuk meg értékadó utasítással az értékét
write(*,*)p
stop
end

 

próbafuttatás

n.: 2

xm (valós) : 5

Ha jól írtad be, ezt kell kapnod:

eredmények (egymás alatt): 5 és 4

A segédprogramot itt leled: poisson.for



[Vissza a fõoldalra]