PC
Guest
Wed Jun 03, 2009 6:58 am
Potrzebuję "wylosować" liczbę w zakresie 1-100 (lub 0-99). Ma ktoś jakieś
rozwiązanie matematyczne, które zapewni mocny rozrzut wartości?
PC
Grzegorz Kurczyk
Guest
Wed Jun 03, 2009 7:48 am
Użytkownik PC napisał:
Quote:
Potrzebuję "wylosować" liczbę w zakresie 1-100 (lub 0-99). Ma ktoś jakieś
rozwiązanie matematyczne, które zapewni mocny rozrzut wartości?
Taki prosty generator pseudolosowy, to rejestr przesuwający ze
sprzężeniem zwrotnym XOR. Klepałem coś takiego na AVR-y w C. Poszukam
dzisiaj i podeślę.
Pozdrawiam
Grzegorz
Artur Miller
Guest
Wed Jun 03, 2009 7:53 am
"PC" <p_c_h@poczta.onet.pl> wrote in message
news:h053e4$qjh$1@news.task.gda.pl...
Quote:
Potrzebuję "wylosować" liczbę w zakresie 1-100 (lub 0-99). Ma ktoś jakieś
rozwiązanie matematyczne, które zapewni mocny rozrzut wartości?
PC
1:
http://ag.bocznica.org
2:
http://en.wikipedia.org/wiki/Xorshift (ten o którym pisał grzegorz)
3:
http://en.wikipedia.org/wiki/List_of_pseudorandom_number_generators
pozdr
@
Grzegorz Kurczyk
Guest
Wed Jun 03, 2009 8:02 am
Użytkownik Artur Miller napisał:
Quote:
Oooo ciekawie zrobione :-)
P.S. Jednak algorytm rzeźbiłem w assemblerze AVR. Jak ktoś
zainteresowany to zapraszam.
Pozdrawiam
Grzegorz
Adam Dybkowski
Guest
Thu Jun 04, 2009 12:11 am
PC pisze:
Quote:
Potrzebuję "wylosować" liczbę w zakresie 1-100 (lub 0-99). Ma ktoś jakieś
rozwiązanie matematyczne, które zapewni mocny rozrzut wartości?
Wykorzystaj biblioteczną funkcję rand(), ograniczając wynik do
interesującego Cię zakresu, np. tak:
x = rand() % 100;
A naprawdę mocny rozrzut wartości (i co ważniejsze, brak korelacji z
poprzednimi wynikami) daje dopiero fizyczny generator szumu losowego:
http://home.comcast.net/~orb/index.html
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
roxy
Guest
Thu Jun 04, 2009 6:02 am
Użytkownik "Adam Dybkowski" <adybkows12@45wp.pl> napisał w wiadomości
news:h06vul$o7l$1@news.wp.pl...
Quote:
PC pisze:
Potrzebuję "wylosować" liczbę w zakresie 1-100 (lub 0-99). Ma ktoś jakieś
rozwiązanie matematyczne, które zapewni mocny rozrzut wartości?
Wykorzystaj biblioteczną funkcję rand(), ograniczając wynik do
interesującego Cię zakresu, np. tak:
x = rand() % 100;
A naprawdę mocny rozrzut wartości (i co ważniejsze, brak korelacji z
poprzednimi wynikami) daje dopiero fizyczny generator szumu losowego:
http://home.comcast.net/~orb/index.html
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
Nie wiem czy pomysl jest dobry ale moja propozycja jest taka aby przed
wykonaniem rand ustawic zarodek (chyba funkcja srand(arg)) a jako zarodek
dac wartosc odczytana z przetwornika AD linii ktora "wisi w powietrzu". moze
troche to poprawi rozklad prawdopodobienstwa?
J.F.
Guest
Thu Jun 04, 2009 6:33 am
On Thu, 04 Jun 2009 01:11:17 +0200, Adam Dybkowski wrote:
Quote:
PC pisze:
Potrzebuję "wylosować" liczbę w zakresie 1-100 (lub 0-99). Ma ktoś jakieś
rozwiązanie matematyczne, które zapewni mocny rozrzut wartości?
Wykorzystaj biblioteczną funkcję rand(), ograniczając wynik do
interesującego Cię zakresu, np. tak:
x = rand() % 100;
Uwaga - statystycznie niezbyt poprawne.
Jesli rand() ma zakres np do 65535, to wyniki 0-35 maja wieksze
prawdopodobienstwo niz 36-99
J.
PC
Guest
Thu Jun 04, 2009 7:42 am
Ja nie piszę w C a potrzebuję tylko formułę matematyczną, zeby napisać coś
samodzielnie.
PC
Darek
Guest
Thu Jun 04, 2009 8:56 am
Quote:
Ja nie piszę w C a potrzebuję tylko formułę matematyczną, zeby napisać coś
samodzielnie.
no to najprosciej bedzie Ci oprogramowac automat
a ktorym pisal Grzegorz na xor. Pod asemblerem bedzie to
prosto wykonac.
Rozklad losowy jest dosc przyzwoity i prawdopodobnie w Twoich
zastosowaniach wystarczajacy.
Gdybys potrzebowal cos wymyslnego prawdopodobnie nie
nie pytał bys na grupie.
Pzdr
Darek
PC
Guest
Thu Jun 04, 2009 9:01 am
Dzięki wszystkim za pomoc.
PC