-
11. Data: 2017-12-20 19:40:50
Temat: Re: jeden generator liczb losowych do testowania drugiego?
Od: "M.M." <m...@g...com>
On Wednesday, December 20, 2017 at 8:30:32 AM UTC+1, M.M. wrote:
> On Tuesday, December 19, 2017 at 5:11:43 AM UTC+1, bartekltg wrote:
>
> > [...]
> > Weź dobry generator h i zrób z niego kiepski:
> > Niech G daje liczbę będącą średnią dwóch odpaleń
> > generatora h. G nie jest nawet w przybliżeniu jednorodny.
> > A Twój test przejdzie.
> > [...]
>
> Co myślisz o tym na dole? Porównałem ranlux48 z ranlux48 na innych
> seedach. Długość roku dałem 2^20, ilość urodzin 2^12. Ilość
> kubełków zredukowałem, jak radziłeś. Cały kod:
>
> https://pastebin.com/JhLN12C5
>
>
> P-value wyszło 0.9999927195600541432. Może jednak taki test jest trochę
> lepszy niż myślimy?
MT testowany sam ze sobą raczej też nie przechodzi testu:
test 1
chi-dist-cum: 0.9999997015849526988
test 2
chi-dist-cum: 0.9999228118927154972
-
12. Data: 2017-12-21 00:46:17
Temat: Re: jeden generator liczb losowych do testowania drugiego?
Od: "M.M." <m...@g...com>
On Wednesday, December 20, 2017 at 7:40:52 PM UTC+1, M.M. wrote:
> On Wednesday, December 20, 2017 at 8:30:32 AM UTC+1, M.M. wrote:
> > On Tuesday, December 19, 2017 at 5:11:43 AM UTC+1, bartekltg wrote:
> >
> > > [...]
> > > Weź dobry generator h i zrób z niego kiepski:
> > > Niech G daje liczbę będącą średnią dwóch odpaleń
> > > generatora h. G nie jest nawet w przybliżeniu jednorodny.
> > > A Twój test przejdzie.
> > > [...]
> >
> > Co myślisz o tym na dole? Porównałem ranlux48 z ranlux48 na innych
> > seedach. Długość roku dałem 2^20, ilość urodzin 2^12. Ilość
> > kubełków zredukowałem, jak radziłeś. Cały kod:
> >
> > https://pastebin.com/JhLN12C5
> >
> >
> > P-value wyszło 0.9999927195600541432. Może jednak taki test jest trochę
> > lepszy niż myślimy?
>
>
> MT testowany sam ze sobą raczej też nie przechodzi testu:
>
> test 1
> chi-dist-cum: 0.9999997015849526988
>
> test 2
> chi-dist-cum: 0.9999228118927154972
I generator Fibonacciego z tamtego kodu powyżej ( przypomnę:
https://pastebin.com/JhLN12C5 ), gdy jest testowany sam ze sobą,
też nie przechodzi testu urodzinowego. Albo mam błąd, albo to
jest lepszy (bo trudniejszy) test niż można było się spodziewać :)
Ale błędu raczej nie mam, bo ten sam kod generuje oba rozkłady i
inne narzędzia dają tę samą wartość p-value. Mam prośbę, spójrzcie
na tamten kod, może znajdziecie błędy?
Przy założeniu, że nie mam błędu, jakie płyną z tego wnioski? Proszę,
jeden ważny wniosek: Jeśli uruchamiacie symulację na klastrze, jeśli
używacie nawet tak dobrych generatorów jak std::ranlux48 lub
std::mt19937_64 i w każdym procesie/wątku liczycie to samo zadanie z
innym seedem, to wyniki z poszczególnych wątków/procesów prawdopodobnie
nie są niezależne :)
Ułatwię test. Zrobię rok o długości 2^24 i dam 32 urodziny. Generatory
powinny przejść ułatwione testy.... zobaczymy. Z jakiś czas dam wyniki.
Pozdrawiam
-
13. Data: 2017-12-21 09:25:53
Temat: Re: jeden generator liczb losowych do testowania drugiego?
Od: "M.M." <m...@g...com>
On Thursday, December 21, 2017 at 12:46:19 AM UTC+1, M.M. wrote:
> On Wednesday, December 20, 2017 at 7:40:52 PM UTC+1, M.M. wrote:
> > On Wednesday, December 20, 2017 at 8:30:32 AM UTC+1, M.M. wrote:
> > > On Tuesday, December 19, 2017 at 5:11:43 AM UTC+1, bartekltg wrote:
> > >
> > > > [...]
> > > > Weź dobry generator h i zrób z niego kiepski:
> > > > Niech G daje liczbę będącą średnią dwóch odpaleń
> > > > generatora h. G nie jest nawet w przybliżeniu jednorodny.
> > > > A Twój test przejdzie.
> > > > [...]
> > >
> > > Co myślisz o tym na dole? Porównałem ranlux48 z ranlux48 na innych
> > > seedach. Długość roku dałem 2^20, ilość urodzin 2^12. Ilość
> > > kubełków zredukowałem, jak radziłeś. Cały kod:
> > >
> > > https://pastebin.com/JhLN12C5
> > >
> > >
> > > P-value wyszło 0.9999927195600541432. Może jednak taki test jest trochę
> > > lepszy niż myślimy?
> >
> >
> > MT testowany sam ze sobą raczej też nie przechodzi testu:
> >
> > test 1
> > chi-dist-cum: 0.9999997015849526988
> >
> > test 2
> > chi-dist-cum: 0.9999228118927154972
>
> I generator Fibonacciego z tamtego kodu powyżej ( przypomnę:
> https://pastebin.com/JhLN12C5 ), gdy jest testowany sam ze sobą,
> też nie przechodzi testu urodzinowego. Albo mam błąd, albo to
> jest lepszy (bo trudniejszy) test niż można było się spodziewać :)
> Ale błędu raczej nie mam, bo ten sam kod generuje oba rozkłady i
> inne narzędzia dają tę samą wartość p-value. Mam prośbę, spójrzcie
> na tamten kod, może znajdziecie błędy?
>
> Przy założeniu, że nie mam błędu, jakie płyną z tego wnioski? Proszę,
> jeden ważny wniosek: Jeśli uruchamiacie symulację na klastrze, jeśli
> używacie nawet tak dobrych generatorów jak std::ranlux48 lub
> std::mt19937_64 i w każdym procesie/wątku liczycie to samo zadanie z
> innym seedem, to wyniki z poszczególnych wątków/procesów prawdopodobnie
> nie są niezależne :)
>
>
> Ułatwię test. Zrobię rok o długości 2^24 i dam 32 urodziny. Generatory
> powinny przejść ułatwione testy.... zobaczymy. Z jakiś czas dam wyniki.
>
Generator Fibonacciego na ułatwionym teście zachował się przyzwoicie.
P-value jest równe 0.6862016765421758663. W teście było wygenerowanych
3E11 liczb pseudo-losowych, ponad 11 godzin obliczeń.
Kod:
https://pastebin.com/1huv7HP5
Test:
time ./frnd
rnd seed1: 252276773
rnd seed2: 1201639756
--------------------------------------
loops: 4763156481
0 465935620 465937865 0.0108169465901
1 2253109 2250870 2.22719259664
2 456 450 0.08
chi-square: 2.318009543230488209
chi-dist: 0.1568991632651941654
chi-dist-cum: 0.6862016765421758663
--------------------------------------
^C
real 679m37.501s
user 679m28.800s
sys 0m2.584s
-
14. Data: 2017-12-21 20:33:50
Temat: Re: jeden generator liczb losowych do testowania drugiego?
Od: "M.M." <m...@g...com>
On Thursday, December 21, 2017 at 9:25:55 AM UTC+1, M.M. wrote:
> On Thursday, December 21, 2017 at 12:46:19 AM UTC+1, M.M. wrote:
> > On Wednesday, December 20, 2017 at 7:40:52 PM UTC+1, M.M. wrote:
> > > On Wednesday, December 20, 2017 at 8:30:32 AM UTC+1, M.M. wrote:
> > > > On Tuesday, December 19, 2017 at 5:11:43 AM UTC+1, bartekltg wrote:
> > > >
> > > > > [...]
> > > > > Weź dobry generator h i zrób z niego kiepski:
> > > > > Niech G daje liczbę będącą średnią dwóch odpaleń
> > > > > generatora h. G nie jest nawet w przybliżeniu jednorodny.
> > > > > A Twój test przejdzie.
> > > > > [...]
> > > >
> > > > Co myślisz o tym na dole? Porównałem ranlux48 z ranlux48 na innych
> > > > seedach. Długość roku dałem 2^20, ilość urodzin 2^12. Ilość
> > > > kubełków zredukowałem, jak radziłeś. Cały kod:
> > > >
> > > > https://pastebin.com/JhLN12C5
> > > >
> > > >
> > > > P-value wyszło 0.9999927195600541432. Może jednak taki test jest trochę
> > > > lepszy niż myślimy?
> > >
> > >
> > > MT testowany sam ze sobą raczej też nie przechodzi testu:
> > >
> > > test 1
> > > chi-dist-cum: 0.9999997015849526988
> > >
> > > test 2
> > > chi-dist-cum: 0.9999228118927154972
> >
> > I generator Fibonacciego z tamtego kodu powyżej ( przypomnę:
> > https://pastebin.com/JhLN12C5 ), gdy jest testowany sam ze sobą,
> > też nie przechodzi testu urodzinowego. Albo mam błąd, albo to
> > jest lepszy (bo trudniejszy) test niż można było się spodziewać :)
> > Ale błędu raczej nie mam, bo ten sam kod generuje oba rozkłady i
> > inne narzędzia dają tę samą wartość p-value. Mam prośbę, spójrzcie
> > na tamten kod, może znajdziecie błędy?
> >
> > Przy założeniu, że nie mam błędu, jakie płyną z tego wnioski? Proszę,
> > jeden ważny wniosek: Jeśli uruchamiacie symulację na klastrze, jeśli
> > używacie nawet tak dobrych generatorów jak std::ranlux48 lub
> > std::mt19937_64 i w każdym procesie/wątku liczycie to samo zadanie z
> > innym seedem, to wyniki z poszczególnych wątków/procesów prawdopodobnie
> > nie są niezależne :)
> >
> >
> > Ułatwię test. Zrobię rok o długości 2^24 i dam 32 urodziny. Generatory
> > powinny przejść ułatwione testy.... zobaczymy. Z jakiś czas dam wyniki.
> >
>
> Generator Fibonacciego na ułatwionym teście zachował się przyzwoicie.
> P-value jest równe 0.6862016765421758663. W teście było wygenerowanych
> 3E11 liczb pseudo-losowych, ponad 11 godzin obliczeń.
>
> Kod:
> https://pastebin.com/1huv7HP5
>
>
> Test:
>
> time ./frnd
> rnd seed1: 252276773
> rnd seed2: 1201639756
>
> --------------------------------------
> loops: 4763156481
> 0 465935620 465937865 0.0108169465901
> 1 2253109 2250870 2.22719259664
> 2 456 450 0.08
> chi-square: 2.318009543230488209
> chi-dist: 0.1568991632651941654
> chi-dist-cum: 0.6862016765421758663
> --------------------------------------
>
> ^C
> real 679m37.501s
> user 679m28.800s
> sys 0m2.584s
Uproszczony test przechodzą:
Generator std::ranlux48
rnd seed1: 1898900298
rnd seed2: 16827081
loops: 141295617
0 141229121 141228768 0.000882320236625
1 66489 66834 1.78090492863
2 7 15 4.26666666667
chi-square: 6.048453915532432401
chi-dist: 0.02429768651465504778
chi-dist-cum: 0.9514046559756827399
----------------------------------------------------
---------------
Generator std::mt19937_64
rnd seed1: 1661541351
rnd seed2: 1506358270
loops: 4062183425
0 4060261981 4060263019 0.000265363104547
1 1921054 1919983 0.597422477178
2 390 423 2.57446808511
chi-square: 3.172155925389113521
chi-dist: 0.1023634930368723807
chi-dist-cum: 0.7952730205949993346
Pozdrawiam
-
15. Data: 2017-12-21 22:53:31
Temat: Re: jeden generator liczb losowych do testowania drugiego?
Od: "AK" <n...@n...net>
Użytkownik "M.M." <m...@g...com> napisał:
> > Wygląda na to, że std::mt19937_64 dwa testy przeszedł, jeden
> > co prawda z p-value równym 0.9984, ale przeszedł. Liczb w
> > obu testach było około 38mld.
>
> ...no i i po cholere cala Twoja robota ?
>> W kwestii sensownosci juz mniej.
>Może dlatego, że zaszło jakieś nieporozumienie?
Nie tyle nieporozumienie, tylko to, ze moje uwagi byly wybitnie
ukierunkowane pod potrzeby "pytacza" ktore sa tak proste/standardowe,
ze nie ma sensu uzywac nic innego jak wlasnie standardowe "randomy",
a juz zupelnie nie ma sensu tworzyc cus w assemblerze w tym ("pytacza") kontekscie.
W kontekscie natomiast Twojego rozwiniecia tematu nie mam
nie tylko najmniejszych zastrzezen, ale po prostu juz "grzrecznie, milcze" bo:
1. przerastacie mnie z Bartkiem na dzis o glowe z wiedza
(no kiedys gdy na Odrze pisalem "troche" programow symulacyjnych
gdzie roznego rodzaju generatory - jednostajny, normalny, Poisona itp itd -
byly u mnie "na porzadku dziennym" moglibysmy glebiej pogadac
/choc wtedy Mersene jeszcze nie bylo/ :)
2. Wasz watek jest naprawde interesujacy - skopiowalem kod/rozwiazania
co mi sie zdarza juz bardzo rzadko. Wcale nie z tego powodu ze "wiem lepiej",
ale z racji ogolnego znudzenia zawodem i "poziomem"/mialkoscia dzisiejszej
Mlodziezy/usnetu.
> 1) Sens generatora Fibonacciego już opisałem powyżej, czasami
> potrzebuję ekstremalnie szybkiego generatora.
j/w: grzecznie ,milcze :)
> A tak poza tym, nie tak dawno, to ktoś inny, a nie ja, wywołał temat
> szybkiego generatora liczb losowych, ja tylko trochę rozszerzyłem ;-)
"Troche" ;) ? Heh.
No wypada sobie zyczyc wiecej takich "troche" :)
Porzadne metodyczne/systematyczne podejscie do tematu.
Z mojej strony bezwarunlowy szacun :)
PS: Co nie znaczy ze gdy ew. w innym termacie walniesz gdzies jakas glupote
nie omieszkam zmieszac Cie z (s)firem :) / no moze az tak to nie ;)/
AK
-
16. Data: 2017-12-22 00:05:33
Temat: Re: jeden generator liczb losowych do testowania drugiego?
Od: "M.M." <m...@g...com>
On Thursday, December 21, 2017 at 10:54:06 PM UTC+1, AK wrote:
> Użytkownik "M.M." <m...@g...com> napisał:
> [...]
> j/w: grzecznie ,milcze :)
Ok, rozumiem. Ale ja mam góra podstawową wiedzę statystyczną. Nie wiedziałem
np. że złącza się kubełki gdy przypada mało liczb na kubełek.
> > A tak poza tym, nie tak dawno, to ktoś inny, a nie ja, wywołał temat
> > szybkiego generatora liczb losowych, ja tylko trochę rozszerzyłem ;-)
>
> "Troche" ;) ? Heh.
No może trochę więcej niż trochę ;-) Zaniepokoiło mnie to że dobre generatory
nie przechodzą testu urodzinowego w dieharder i pociągnąłem temat.
> No wypada sobie zyczyc wiecej takich "troche" :)
> Porzadne metodyczne/systematyczne podejscie do tematu.
> Z mojej strony bezwarunlowy szacun :)
Dzięki, ale tu nie ma nic zaawansowanego. Są trzy wzory z definicji
na dużej precyzji. Gamę liczy biblioteka. Do tego jest jedno całkowanie
trapezami - bardziej lamersko nie można, chyba że prostokątami ;-)
Generator Fibonacciego z lagiem stanowi jedno dodawanie :) Ostatnia
rzecz to procedura generująca dowolny rozkład w kubełkach - mam
nadzieję że to jest dobra procedura robiąca test urodzinowy.
Reszta to wyświetlanie wyników i "formatowanie kodu w c++".
> PS: Co nie znaczy ze gdy ew. w innym termacie walniesz gdzies jakas glupote
> nie omieszkam zmieszac Cie z (s)firem :) / no moze az tak to nie ;)/
Ale na spokojnie też zrozumiem, albo... nie zawsze za pierwszym razem ;-)
Pozdrawiam
-
17. Data: 2017-12-22 09:55:00
Temat: Re: jeden generator liczb losowych do testowania drugiego?
Od: "AK" <n...@n...net>
Użytkownik "M.M." <m...@g...com> napisał:
> Użytkownik "M.M." <m...@g...com> napisał:
> [...]
> j/w: grzecznie ,milcze :)
> Ok, rozumiem. Ale ja mam góra podstawową wiedzę statystyczną.
No i co z tego? Porzadnie "zalapales" temat i mysle ze niedlugo staniesz sie
specjalista w tej
domenie :)
> > A tak poza tym, nie tak dawno, to ktoś inny, a nie ja, wywołał temat
> > szybkiego generatora liczb losowych, ja tylko trochę rozszerzyłem ;-)
>
>> "Troche" ;) ? Heh.
> No może trochę więcej niż trochę ;-) Zaniepokoiło mnie to że dobre generatory
> nie przechodzą testu urodzinowego w dieharder i pociągnąłem temat.
Tu tez mi sie podoba, ze nie potratowales "aksjomatycznie" tzw standardow :)
Zarowno biblioteki kompilatorow nie sa doskonale jak i inne "standardy".
Pisza je zwykli (tacy sami) jak my ludzie.
Bardzo czesto (ostatnio juz wylacznie:) spotykam postawe ze to co z USA to jest
_bezwzglednie_ doskonale, a to co nasze (polskie) to z zasady beee.
Tymczasem w dziedzinie szeroko pojetej inz.programowania akurat Europa historycznie
ma wiekszy dorobek i nie mozna miec idiotycznych kompleksow.
Pisze to bardzo ceniac USA (o wiele bardziej niz... Kur...rope - szczegolnie
pragmatyzm USA)
i.. swiadomie "zbaczam" z tematu aby kolejny raz "wlozyc kij w mrowisko"...
>> No wypada sobie zyczyc wiecej takich "troche" :)
>> Porzadne metodyczne/systematyczne podejscie do tematu.t
>> Z mojej strony bezwarunlowy szacun :)
> Dzięki, ale tu nie ma nic zaawansowanego. Są trzy wzory z definicji
> na dużej precyzji.
Nie o to chodzi jak zaawansowane matematycznie/merytorycznie jest zagadnienie.
Chodzi o Twoj sposob podejscia do tematu. Nie "fanatyczny/uczuciowy" lecz
taki stricte inzynierski/profesjonalny.
Dzis coraz rzadszy nie tylko w usenecie lecz i w "normalnej" zawodowej
rzeczywistosci.
AK