[ bigguy @ 17.03.2008. 18:38 ] @
Rec je o sledećemda bi lakše pojasnio poslužiću se koordinatnim sistemom) U okviru koordinatnog sistema postoji osnovni oblik Gama funkcije G(2,1,) ucrtan tako da vrednosti na X-osi uzimaju vrednosti od 0 do 1 sa korakom od 0,01. Na Y-osi koordinatnog sistema nalazi se vrednosti funkcije raspodele. Svakoj vrednosti sa X-ose odgovara određena vrednost sa Y-ose.
Generator bi trebao da bude formulisan tako da bira slučajne vrednosti sa X-ose u intervalu (0,1) sa korakom od 0,01, i da na osnovu njih izračunava vrednosti koje će odgovarati Gama raspodeli oblika G(2,1,).

Nadam se da se neko bavio ovim problemom
[ mmix @ 17.03.2008. 19:50 ] @
To kako si opisao graf Gama funkcije indikuje da pricas o transponovanoj kumulativnoj distribuciji Gamma funkcije.

(c) Wikipedia:


Protpostavljam da radis random generator brojeva koji pretvara uniformni generator brojeva u generator "iskrivljen" gamma funkcijom, verovatno za neku MonteCarlo ili HyperCube simulaciju.

Kao prvo mislim da nemas potrebe da samplujes u koracima od 0.01 jer je CDF game kontinualna funkcija i postoji za svako x [0,1], tako da ti je sasvim ok da samplujes za bilo koji realan broj iz tog opsega. E sad , posto ovo ukljucuje reseavanje integralne jednacine :

x = cdf(y) = integral (0 do y) od pdf(a, 2, 1)*da po x, gde je pdf distribucija verovatnoce bazirana na gama funkciji, i koja je sama po sebi integral, smucice ti se zivot da sve to iskodiras. Ali, pomoc postoji. U zavisnosti od toga koji programski jezik koristis postoje vec gotove matiematicke biblioteke koje imaju funkcije za samplovanje cdf-a:

C, C++: GSL - GNU Scientific Library GPL licenca
.NET: nMath managed library - komercijalni paket, u principu managed wrapper oko BLAS i LAPACK biblioteka. Trebaju ti Core i Stats paketi.

za ostale programeske jezike ne znam, verovatno neko drugi moze da ti da vise informacija o tome.
[ bigguy @ 17.03.2008. 22:11 ] @
Ok. U pravu si, reč je o simulaciji :)

Čitajući forum skontao sam da se dosta pravih odgovora daje onda kada je problem postavljen baš onako kako treba, pa hajde da ga definišem u pravom obliku: potrebno je napraviti generator koji će vrednost X (npr. X=150) varirati tako da odstupanje od zadate vrednosti X odgovara Gama raspodeli.

Programski jezik koji koristim za generator je C.
[ srki @ 18.03.2008. 06:33 ] @
Pogledaj ovde.
[ mmix @ 18.03.2008. 10:53 ] @
Hmm, sve zavisi od toga kako hoces da "mapiras" okolinu broja X sa G(a,b), to bi trebalo da ti je u postavci zadatka.

funkcije za sve ovo imas u GSL - GNU Scientific Library. Tu imas i funkciju gsl_ran_gamma (const gsl_rng * r, double a, double b) koja vraca random broj iz gama distribucije.

Medjutim pretpostavljam da kad bi umesto standardne gama distribucije G(shape, scale) koristio opstu gama distribuciju G(location, shape, scale) uz location=X da bi iz njenog CDF-a direktno samplovanjem dobio brojeve koji ti trebaju, ali nigde nisam video biblioteku koja to direktno odradjuje, a adaptacija CDF formule po lokaciji nekako prevazilazi moje matematicke skilove
[ Jesenjin @ 23.07.2008. 16:02 ] @
Pozdrav.

Evo ovako, potreban mi je Generator saobracaja (paketa) sa Poasonovom raspodelom, kako bih odradio jednu simulaciju mreze (nekog rutera). Elem, problem je u tome sto mi je to prvi put da se srecem sa tako necim, i sa simulacijom i sa generatorom saobracaja. Sta je uopste generator saobracaja? Neka petlja koja se vrti i isporucuje pakete?
Koliko sam video, na netu postoje gotova resenja tog generatora u C++, medjutim, kod je strahovito nerazumljiv.
Da li neko zna nesto vise o tome, bilo kakva info ce dobro doci, jer se opasno dvoumim da batalim taj rad i pokusam sa nekim drugim.
Pozdrav :)
[ EArthquake @ 24.07.2008. 11:57 ] @
ako se ja dobro secam gama raspad se statisticki ponasa u okviru poasonove ili gausove raspodele , u zavisnosti od broja raspada
[ Nedeljko @ 25.07.2008. 16:33 ] @
Ako imas generator za bilo koju apsolutno neprekidnu raspodelu, od njega mozes napraviti generator za bilo koju drugu raspodelu. No, posto je to matematicko pitanje, neka se tema preseli na odgovarajuci forum, pa da tamo odgovorim.