Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++/STD]Pseudolosowy generator o rozkładzie poissona

Ostatnio zmodyfikowano 2015-04-17 23:59
Autor Wiadomość
tytrydsdf
Temat założony przez niniejszego użytkownika
[c++/STD]Pseudolosowy generator o rozkładzie poissona
» 2015-04-08 18:20:36
Hej, mam taki program w którym mam oś X i tworzę sobie tablice intów gdzie przechowuje pozycję x i za pomocą pętli for do każdego elementu tablicy wpisuję wartość z generatora tab = ( rand() % 24 );  
Całkowita długosć osi x wynosi 24 dlatego ograniczam wylosowane liczby do tego przedziału.


Jednak chciałbym żeby rozkład nie był jednostajny tak jak mam teraz ale poissonowski. A największe prawdopodobieństwo wygenerowania punktu było dla x=17.
Wiem że w bibliotece std jest taki generator ale nie wiem za bardzo jak go użyć aby spełniał moje wymagania

http://en.cppreference.com/w/cpp/numeric/random/poisson_distribution
P-130415
pekfos
» 2015-04-08 20:21:30
Argument konstruktora?
P-130422
tytrydsdf
Temat założony przez niniejszego użytkownika
» 2015-04-08 21:26:57
Ja chyba nie bardzo rozumiem zasadę działania tego rozkładu. Ten program ma w przybliżeniu wizualizować przychodzące do centrali rozmowy. Jeśli za ten parametr wstawię 18 i wygeneruje 200 próbek to praktycznie ułożą się one tak jak bym tego chciał w okolicach 18:00 największy ruch i stopniowo malejący, w późniejszych godzinach praktycznie zerowy.

Ale jeśli chcę przeskalować te wartości na sekundy i zastosować ten sam rozkład to już wartości się nie zachowują tak jak bym tego chciał.
Wynika to pewnie z tego że nie znam się na probabilistyce a ze źródeł naukowych niewiele jestem w stanie zrozumieć bo brakuje mi podstaw. Czy mógł by mi ktoś w takim razie własnymi słowami na moje potrzeby wyjaśnić mi na jakiej zasadzie to działa?

P-130432
Monika90
» 2015-04-09 12:42:26
Generator z rozkładem Poissona zwraca ilość zdarzeń które przypadły na symulowaną jednostkę czasu. Nie zwraca godziny w której zdarzenie wystąpiło.

Jeżeli masz dane z których wynika ile zdarzeń średnio przypada na daną godzinę, to możesz użyć discrete_distribution do symulacji.
P-130441
tytrydsdf
Temat założony przez niniejszego użytkownika
» 2015-04-09 16:17:25
Taki rozkład jak tutaj jest dla mnie satysfakcjonujący,

http://www.wolframalpha.com/input/?i=PoissonDistribution%5B9%2C8030%5D


tylko jak to rozbić na mniejsze jednostki czasu? Bo ten rozkład jest dyskretny i wylosowane liczby przyjmują wartości tylko całkowite od 0 do 24. A ja bym chciał żeby to był rozkład ciągły albo ewnetualnie dyskretny ale ograniczony co do minut albo senkund a nie godzin. Tak aby przy wygenerowaniu tych 200-500 próbek wartości się nie powtarzały zbyt często.
P-130450
Monika90
» 2015-04-09 16:55:17
Nie możesz do tego użyć rozkładu Poissona, bo jak zwiększysz rozdzielczość do minut, to rozkład będzie bardzo skupiony wokół wartości średniej. Czyli większość wylosowanych wartości będzie około godziny 18:00 (czy której tam chcesz). Użyj rozkładu normalnego.
P-130453
Piastlis
» 2015-04-17 23:59:00
Metoda dla dowolnego rozkładu może wyglądać tak:
1 losujesz liczbę A
2 losujesz drugą liczbę B i porównujesz ją z rozkładem w punkcie R(A)
3 jeżeli B>R(A) punkt 1

Można spróbować "zagęścić" punkty jakąś funkcją G(A) ale to metoda przybliżona.
Poprawka
To może być metoda dokładna.Trzeba policzyć całkę nieoznaczoną z funkcji rozkładu i z niej funkcję odwrotną.Nie zawsze jest to możliwe albo nie bardzo się chce lub potrafi.
Najbardziej oczywistą taką funkcją będzie tangens.Nie da ona rozkładu poissona tylko 1/(1+x^2). Jak uznasz że to przybliżenie nie wystarczy spróbuj z wielomianem : a*x+b*x3+c*x^5+d*x^7....
P-131098
« 1 »
  Strona 1 z 1