Article View: pl.comp.lang.c
Article #26Re: generacja liczb pseudolosowych
From: Marek Matula
Date: Wed, 08 Oct 1997 16:03
Date: Wed, 08 Oct 1997 16:03
39 lines
2067 bytes
2067 bytes
On 6 Oct 97 21:22:10 GMT, "yacko" <yacko@priv.onet.pl> wrote:
>
> Czy kto mo¿e mi pomóc? Próbuje stworzyc algorytm generuj¹cy liczby
>pseudolosowe odbiegaj¹cy dosc znacznie od tego uzywanego w narzedziach
>Borlanda.
> Zalezy mi na tym by dla duzej serii dawa³ rozklad plaski, ale zdarzalyby
>mu sie wygenerowac czesciej serie np zlozone z duzych wartosci, malych itd.
>Po prostu "mniej doskona³y".
> zainteresowanych prosze o kontakt
>--
Sprawa jest dosc prosta:
- musisz miec zadany rozklad zmiennej losowej opisany funkcja (moze
byc interpolacja kilku punktow).
- rozklad zmiennej losowej musi spelniac warunek, zeby calka od 0 do
nieskonczonosci = 1
- jezeli nie jest =1 to funkcje dzielisz przez tyle ile jest rowna
(tak, zeby w koncu calka wyszla 1)
- wyznaczasz dystrybuante rozkladu, ze wzoru:
F(x)=calka od 0 do x z f(x) dx
gdzie f(x) - rozklad, F(x) - dystrybuanta
- jezeli wszystko dobrze zrobiles to F(0) powinno sie rownac 0, a
F(nieskonczonosc) = 1.
- znajdujesz funkcje odwrotna do dystrybuanty. Jej dziedzina powinna
nalezec do przedzialu <0,1>
- piszesz procedure losujaca:
...
float moja_liczba_losowa()
{
float a=random() // procedura generujaca liczby o rozkladzie
rownomiernym z przedzialu <0,1) (moze byc standardowa z C/Pascala)
float moja_losowa=funkcja_odwrotna_do_dystrybuanty(a);
return moja_losowa;
}
Jezeli nic nie pomylilem, to powinno byc OK :-)
Marek Matula
marekm@zeus.polsl.gliwice.pl
Technical Details
Message-ID:
<344c8da0.6393510@news.tpnet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!uw.edu.pl!news.icm.edu.pl!not-for-mailReferences:
<01bcd29d$e9a47960$8df674c3@ppp>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!uw.edu.pl!news.icm.edu.pl!not-for-mail From: marekm@zeus.polsl.gliwice.pl (Marek Matula) Newsgroups: pl.comp.lang.c,pl.comp.lang.delphi,pl.comp.lang.vbasic,pl.comp.programming Subject: Re: generacja liczb pseudolosowych Date: Wed, 08 Oct 1997 16:03:42 GMT Organization: ICM Lines: 40 Message-ID: <344c8da0.6393510@news.tpnet.pl> References: <01bcd29d$e9a47960$8df674c3@ppp> NNTP-Posting-Host: rap-wct119.katowice.tpnet.pl Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit