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