ďťż

Ładny brzuch

Witam.

Mam problem i proszę o pomoc.
Chodzi o generator liczb (pseudo)losowych o dowolnym rozkładzie, zwykły generator to nie problem, ale ten "dowolny rozkład"...........tu moja wiedza jeszcze nie sięga mógłby mi ktoś przybliżyć tą sprawę?. Wiem że najłatwiejszy sposób napisania takiego generatora to użycie metody odwracania dystrybuanty (tak mi się wydaje) ale nie wiem jak to zapisać w C++. Byłbym wdzięczny za pomoc.

Pozdrawiam.



Polecam ten link

oraz ten

Chłopie trzeci dzień siedze na google i jak dotąd nie zauważyłem żadnych przydatnych mi komend w c++ do wykonania tego, oprócz miliona matematycznych wzorów - matematykę rozumiem (napewno większość) ale jak pewnie zauważyłeś w moim poprzednim poście nie mam dostarczającej wiedzy na temat c++ tak mam też z 10 książek do c++ wybacz mało efektywne te książki więc prosze cię z takimi odpowiedziami zastanów się przez moment bo to żałosne...

nie wiem co masz namyśli "dowolny rozkład" - chodzi o to by za każdym razem kiedy włączamy program wylosowana była inna liczba ???



wyjaśnij szerzej o co ci chodzi z tym dowolnym rozkładem


chodzi o to by za każdym razem kiedy włączamy program wylosowana była inna liczba ??? Nie to można uzyskać za pomocą srand() np.
#include <conio.h>
#include <cstdlib>
#include <ctime>
#include <iostream>

using namespace std;
int main() {
int podaj;
cout << "Podaj ilosc liczb do wylosowania" << endl;
cin >> podaj;
cout << endl;
int zakres;
cout << "Podaj zakres losowanych liczb od 0 do..." << endl;
cin >> zakres;
srand((unsigned)time(0));
int moj_random;
for(int i=0; i<podaj; i++){
moj_random = (rand()%zakres)+1;
cout << moj_random << endl;
}
getch();
}

To co potrzebuje jest troche trudniejsze (albo mi się wydaje). Jak wiadomo tych rozkładów jest troche (normalny, wykładniczy, gamma,Rayleigha, beta, Erlanga, Snedecora, Maxwella itd.).
O ile się dobrze orientuje do generowania liczb pseudolosowych o rozkładzie równomiernym stosuje się generatory liniowe, nieliniowe, Fibonacciego, na rejestrach przesuwnych, oparte na mnożeniu z przeniesieniem, mieszane (posiadam kilka takich).

A do rozkładów dowolnych metodę odwracania dystrybuanty, eliminacji, superpozycji rozkładów i właśnie nie wiem jak to zapisać w C++.

Są jeszcze o podstawowych rozkładach prawdopodobiństwa - dyskretne (dwuwymiarowy, poissona, geometryczny), normalne (gaussowski, Cauchyego).

Ps. Czy całkowanie numeryczne metodą Monte Carlo można traktować jako generowanie liczb o dowolnych rozkładach ?? bo to by rozwiązało mój problem w inny sposób, ale nie wiem czy można ktoś mi tak mówił kiedyś albo się przesłyszałem.

Pozdrawiam.
Użytkownik Misiek. edytował ten post 06 czerwiec 2005, 00:44
Misiek. ja właśnie szukam generatora, ktory losuje liczby bez powtórzen i spróbowałem ten który ty napisałeś jako przykład wyżej i musze powiedzieć ze on nie daiała tzn losuje liczby ktore sie powtarzaja!!:( łatwo to sprawdzić - wystarczy jako ilośc liczb do wylosowania podać np 5 i zakres też 5!! Jeśli znasz jakiś sposób na jak to zrobić żeby działało to napisz prosze:)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •