generator liczb pseudolosowych

0

Witam
Mam do napisania dwa generatory liczb pseudolosowych o rozkładzie wykładniczym i Bernouliego. Czy wie ktoś może jak to napisać? Z góry dziękuje za pomoc
Pozdrawiam

0

Witam,
aktualnie piszę program wykorzystujący te generatory więc coś o nich wiem. Podstawą generacji dowolnych rozkładów jest posiadanie DOBREGO generatora liczb o rozkładzie równomiernym!!
Poniżej zamieszczam przykładowy generator liczb o rozkładzie równomiernym:
float rown(int a, int q, int r)//mogą to być liczby a=16807, q=127773,r=2836
{
static int x=1635462 ;//jakaś początkowa wartość inicjującą mój generator
int h=x/q ;
x=a*(x - qh) - rh ;
if (x<0)
x=x+2147483647 ;
float xx=x/2147483647 ;
return xx ;
}
Jeśli już masz ten generator to rozkład wykładniczy otrzymuje się metodą odwracanie dystrybuanty.
Algorytm:

  1. Wyznaczyć liczbę losową r o rozkładzie równomiernym z przedziału (0,1)
  2. Podstawić do wzoru: [-(labmda)^(-1) ]*ln(r)
    Rozkład Bernouliego ma na wyjściu 0 lub 1.
    Losujemy znow liczbe r o rozkladzie równomiernym z przedziału (0,1)
    Jeżeli r<p to na wyjście dajemy 0
    W przeciwnym przypadku 1
    Miłej zabawy :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1