Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako bi napravili generator slučajnih brojeva iz Gama raspodele

[es] :: Art of Programming :: Kako bi napravili generator slučajnih brojeva iz Gama raspodele

[ Pregleda: 595 | Odgovora: 5 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bigguy
borisav ignjatov
zrenjanin

Član broj: 87859
Poruke: 57
212.200.180.*



Profil

icon Kako bi napravili generator slučajnih brojeva iz Gama raspodele17.03.2008. u 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
17.03.2008. u 18:38 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

Član broj: 17944
Poruke: 1606
195.252.78.*



Profil

icon Re: Kako bi napravili generator slučajnih brojeva iz Gama raspodele17.03.2008. u 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.

▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
17.03.2008. u 19:50 

bigguy
borisav ignjatov
zrenjanin

Član broj: 87859
Poruke: 57
212.200.179.*



Profil

icon Re: Kako bi napravili generator slučajnih brojeva iz Gama raspodele17.03.2008. u 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.
17.03.2008. u 22:11 

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3632
*.xdsl.xnet.co.nz.



Profil

icon Re: Kako bi napravili generator slučajnih brojeva iz Gama raspodele18.03.2008. u 06:33
Pogledaj ovde.
18.03.2008. u 06:33 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

Član broj: 17944
Poruke: 1606
195.252.78.*



Profil

icon Re: Kako bi napravili generator slučajnih brojeva iz Gama raspodele18.03.2008. u 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

▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
18.03.2008. u 10:53 

Jesenjin

Član broj: 35183
Poruke: 30
93.86.88.*



Profil

icon Re: Kako bi napravili generator slučajnih brojeva iz Gama raspodelepre 6h
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 :)
23.07.2008. u 16:02 

[es] :: Art of Programming :: Kako bi napravili generator slučajnih brojeva iz Gama raspodele

[ Pregleda: 595 | Odgovora: 5 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.