🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.vbasic
6 messages
6 total messages Started by yacko Mon, 06 Oct 1997 21:22
generacja liczb pseudolosowych
#25
Author: yacko
Date: Mon, 06 Oct 1997 21:22
10 lines
1006 bytes
	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
-- 
Jacek <Yacko@priv.onet.pl>
Re: generacja liczb pseudolosowych
#26
Author: Robert Maron
Date: Tue, 07 Oct 1997 01:10
24 lines
1710 bytes
yacko <yacko@priv.onet.pl>: [pl.comp.lang.c: news:<01bcd29d$e9a47960$8df674c3@ppp>]
: 	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".

no to mozesz zaburzyc istniejacy generator; np. jakos tak:
(nie, nie napisze tego porzadnie w c)

zmienne d,m maja byc globalne

int dzika_losowosc(int r)
{
  w = wartosc losowa;
  if (malo prawdopodobne) then { d = wartosc losowa; m = wartosc losowa }
  else if (dosc prawdopodobne) then { d = 0; m = r };
  return ( (w%m+d) % r );
}

robert
ps. troche przegiales z lista grup na ktorych zadales to pytanie;
    ustawiam followup na .c; innych tez zachecam do niekontynuowania
    dyskusji na tylu grupach naraz...
-- 
robmar@mimuw.edu.pl                  http://zls.mimuw.edu.pl/~robmar/
Re: generacja liczb pseudolosowych
#27
Author: Artur Jarkiewicz
Date: Tue, 07 Oct 1997 21:31
25 lines
1772 bytes
yacko 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
> --
> Jacek <Yacko@priv.onet.pl>

O ile dobrze pamietam, to w ksiazce "2^5 programow w jezyku Basic" jest
algorytm generatora bazujacego na zmodyfikowanej funkcji EXP. Ta ksiazke
akurat mam to moge sprawdzic. Jesli jest to moge ci przeslac na priv.

Pozdrowka.
Artur.
-- 
  _ | ______________________________________________________________
 / -+-_  ___  ___  _  _ _  ___  ___                                 \ 
|   |/ || _ \/ __)| || \ |/   \| __) Artur Jarkiewicz                |
|   /_ ||   /\__ \| ||   || | || __) ajark@meil.pw.edu.pl            |
|  /___||_\_\(___/|_||_\_|\___/|___) http:/www.meil.pw.edu.pl/~ajark |
 \__________________________________________________________________/
Re: generacja liczb pseudolosowych
#29
Author: Tomasz Zawalski
Date: Wed, 08 Oct 1997 15:47
27 lines
1682 bytes
On Wed, 8 Oct 1997, Marek Matula wrote:

> On 6 Oct 97 21:22:10 GMT, "yacko" <yacko@priv.onet.pl> wrote:
> 
> >	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.
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Sprawa jest dosc prosta:

[tu duży CIACH]

> 
> Jezeli nic nie pomylilem, to powinno byc OK :-)
> 
> Marek Matula
> marekm@zeus.polsl.gliwice.pl

Chyba jednak nie. Przecież gość nie chce mieć dobreg generatora liczb
losowych, tylko taki który oszukuje i daje na przemian SERIE liczb
małych i dużych. To co proponujesz umożliwi tylko wygenerowanie
losowo (w zależności od wybranej funkcji gęstości - fakt) przemieszanych
małych i dużych liczb. Jak zrobić taki generator to już nie wiem - sorry :)

Tomek

tomekz (z) clinicom.uhc.lublin.pl
           ajax.umcs.lublin.pl
Re: generacja liczb pseudolosowych
#28
Author: Marek Matula
Date: Wed, 08 Oct 1997 16:03
39 lines
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
Re: generacja liczb pseudolosowych
#30
Author: Marek Matula
Date: Fri, 10 Oct 1997 15:10
39 lines
2201 bytes
On Wed, 8 Oct 1997 16:47:10 +0100, Tomasz Zawalski
<tomekz@uhc.lublin.pl> wrote:

>> >	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.
>                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> Sprawa jest dosc prosta:
>
>[tu du¿y CIACH]
>> 
>> Jezeli nic nie pomylilem, to powinno byc OK :-)
>> 
>> Marek Matula
>> marekm@zeus.polsl.gliwice.pl
>
>Chyba jednak nie. Przecie¿ goœæ nie chce mieæ dobreg generatora liczb
>losowych, tylko taki który oszukuje i daje na przemian SERIE liczb
>ma³ych i du¿ych. To co proponujesz umo¿liwi tylko wygenerowanie
>losowo (w zale¿noœci od wybranej funkcji gêstoœci - fakt) przemieszanych
>ma³ych i du¿ych liczb. Jak zrobiæ taki generator to ju¿ nie wiem - sorry :)
>
Chyba jednak tak. To co napisalem sluzy do wygenerowania ciagu liczb o
zadanym rozkladzie (np. tak zaby czesciej losowal liczby z jednego
przedzialu, rzadziej z innego). Wystarczy zrobic np. 3 takie rozklady
(jeden rownomierny, jeden "faworyzujacy" duze liczby, jeden - male)  i
zastosowac metode superpozycji do wyboru rozkladu. A jeszcze lepiej po
wyborze rozkladu wylosowac ile razy z danego rozkladu bedziemy
korzystac. Myslalem, ze to oczywiste... 

Marek Matula
marekm@zeus.polsl.gliwice.pl



---
Marek Matula
marekm@zeus.polsl.gliwice.pl
http://www.polsl.gliwice.pl/~marekm
ICQ UIN: 3888637
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads