[java] losowanie z rozkladem wykladniczym
-
- Użytkownik
- Posty: 113
- Rejestracja: 4 paź 2006, o 19:50
- Płeć: Mężczyzna
- Lokalizacja: z nienacka
- Podziękował: 15 razy
- Pomógł: 5 razy
[java] losowanie z rozkladem wykladniczym
tak jak w temacie. nie wiem czemu ten ktory napisałem zwraca mi jakies zle wyniki. moze istnieje juz taka funkcja w jakiejś bibliotece. z gory dzieki za pomoc.
-
- Użytkownik
- Posty: 113
- Rejestracja: 4 paź 2006, o 19:50
- Płeć: Mężczyzna
- Lokalizacja: z nienacka
- Podziękował: 15 razy
- Pomógł: 5 razy
[java] losowanie z rozkladem wykladniczym
samo losowanie to kilka linijek.
nic wielkiego. opierajace sie na gestosci rozkladu lamba*exp(-lambda*x)
gdzie x losuje zwyklym randomem
nic wielkiego. opierajace sie na gestosci rozkladu lamba*exp(-lambda*x)
gdzie x losuje zwyklym randomem
- kuch2r
- Użytkownik
- Posty: 2302
- Rejestracja: 18 paź 2004, o 18:27
- Płeć: Mężczyzna
- Lokalizacja: Wrocław/Ruda Śląska
- Podziękował: 9 razy
- Pomógł: 408 razy
[java] losowanie z rozkladem wykladniczym
z tego co się orientuję w temacie, to generujemy rozkład na podstawie dystrybuanty rozkładu.
Jeśli chcemy otrzymać liczby z rozkładu wykładniczego, wówczas jeśli istnieje taka możliwość to znajdujemy funkcję odwrotną do dystrubuanty naszego rozkładu. A następnie podstawiamy kolejne wartości, które otrzymaliśmy przy pomocy losowania "random".
Jeśli chcemy otrzymać liczby z rozkładu wykładniczego, wówczas jeśli istnieje taka możliwość to znajdujemy funkcję odwrotną do dystrubuanty naszego rozkładu. A następnie podstawiamy kolejne wartości, które otrzymaliśmy przy pomocy losowania "random".
-
- Użytkownik
- Posty: 107
- Rejestracja: 7 lis 2006, o 12:03
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Pomógł: 20 razy
[java] losowanie z rozkladem wykladniczym
Polecam metodę ROU (łatwa w implementacji).
1. Generujesz (rozkładem równomiernym)
\(\displaystyle{ A \in\ <0\ ;\ 1>\ \wedge\ B \in\ <0\ ;\ 2/e>}\)
2. Jeśli
\(\displaystyle{ B/A\ > -2\ln{A}}\)
to wróć do 1. W przeciwnym przypadku zwróć B/A.
1. Generujesz (rozkładem równomiernym)
\(\displaystyle{ A \in\ <0\ ;\ 1>\ \wedge\ B \in\ <0\ ;\ 2/e>}\)
2. Jeśli
\(\displaystyle{ B/A\ > -2\ln{A}}\)
to wróć do 1. W przeciwnym przypadku zwróć B/A.