Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #29051 > unrolled thread
| Started by | "M.M." <mmarszik@gmail.com> |
|---|---|
| First post | 2016-10-06 13:42 -0700 |
| Last post | 2016-10-06 18:18 -0700 |
| Articles | 20 on this page of 23 — 3 participants |
Back to article view | Back to pl.comp.programming
testowanie generatorów liczb losowych (kontynuacja) "M.M." <mmarszik@gmail.com> - 2016-10-06 13:42 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) Borneq <borneq@antyspam.hidden.pl> - 2016-10-07 02:00 +0200
Re: testowanie generatorów liczb losowych (kontynuacja) "M.M." <mmarszik@gmail.com> - 2016-10-06 17:12 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) Borneq <borneq@antyspam.hidden.pl> - 2016-10-07 02:23 +0200
Re: testowanie generatorów liczb losowych (kontynuacja) "M.M." <mmarszik@gmail.com> - 2016-10-06 17:29 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) Borneq <borneq@antyspam.hidden.pl> - 2016-10-07 15:00 +0200
Re: testowanie generatorów liczb losowych (kontynuacja) "M.M." <mmarszik@gmail.com> - 2016-10-07 06:20 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) bartekltg <bartekltg@gmail.com> - 2016-10-07 07:39 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) "M.M." <mmarszik@gmail.com> - 2016-10-07 07:51 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) bartekltg <bartekltg@gmail.com> - 2016-10-07 08:00 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) "M.M." <mmarszik@gmail.com> - 2016-10-07 08:21 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) bartekltg <bartekltg@gmail.com> - 2016-10-07 09:02 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) "M.M." <mmarszik@gmail.com> - 2016-10-07 10:40 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) bartekltg <bartekltg@gmail.com> - 2016-10-07 19:58 +0200
Re: testowanie generatorów liczb losowych (kontynuacja) "M.M." <mmarszik@gmail.com> - 2016-10-07 15:25 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) "M.M." <mmarszik@gmail.com> - 2016-10-07 17:32 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) bartekltg <bartekltg@gmail.com> - 2016-10-08 09:52 +0200
Re: testowanie generatorów liczb losowych (kontynuacja) "M.M." <mmarszik@gmail.com> - 2016-10-08 05:00 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) bartekltg <bartekltg@gmail.com> - 2016-10-07 07:47 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) bartekltg <bartekltg@gmail.com> - 2016-10-07 08:20 -0700
Re: testowanie generatorów liczb losowych (kontynuacja) Borneq <borneq@antyspam.hidden.pl> - 2016-10-07 17:23 +0200
Re: testowanie generatorów liczb losowych (kontynuacja) bartekltg <bartekltg@gmail.com> - 2016-10-07 02:58 +0200
Re: testowanie generatorów liczb losowych (kontynuacja) "M.M." <mmarszik@gmail.com> - 2016-10-06 18:18 -0700
Page 1 of 2 [1] 2 Next page →
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-10-06 13:42 -0700 |
| Subject | testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <7e48f2e8-4a53-430a-b2fb-6213375c0cc3@googlegroups.com> |
Trudno uwierzyć, ale widać czarno na białym, że mt19937_1998
wg diehardera nie przechodzi testu birthdays. dieharder ma
problem, MT, ja coś źle robię?
time dieharder -d 0 -g 15 -m 1000
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second| Seed |
mt19937_1998| 1.12e+07 | 502159522|
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment
#=============================================================================#
diehard_birthdays| 0| 100| 100000|0.00000458| WEAK
real 31m42.178s
user 31m31.855s
sys 0m6.840s
time dieharder -d 0 -g 15 -m 5000
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second| Seed |
mt19937_1998| 4.32e+06 |2158334279|
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment
#=============================================================================#
diehard_birthdays| 0| 100| 100000|0.00000000| FAILED
real 39m10.705s
user 39m3.746s
sys 0m4.479s
[toc] | [next] | [standalone]
| From | Borneq <borneq@antyspam.hidden.pl> |
|---|---|
| Date | 2016-10-07 02:00 +0200 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <nt6oi5$1q7$1@node1.news.atman.pl> |
| In reply to | #29051 |
W dniu 06.10.2016 o 22:42, M.M. pisze: > Trudno uwierzyć, ale widać czarno na białym, że mt19937_1998 > wg diehardera nie przechodzi testu birthdays. dieharder ma > problem, MT, ja coś źle robię? > > > > time dieharder -d 0 -g 15 -m 1000 -m 1000 oznacza poważniejszy test? bez tego parametru szybko się wykonuje i przechodzi test
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-10-06 17:12 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <b7ca9dac-6507-4889-b77e-7680cd3fc59e@googlegroups.com> |
| In reply to | #29052 |
On Friday, October 7, 2016 at 2:00:06 AM UTC+2, Borneq wrote: > W dniu 06.10.2016 o 22:42, M.M. pisze: > > Trudno uwierzyć, ale widać czarno na białym, że mt19937_1998 > > wg diehardera nie przechodzi testu birthdays. dieharder ma > > problem, MT, ja coś źle robię? > > > > > > > > time dieharder -d 0 -g 15 -m 1000 > > -m 1000 oznacza poważniejszy test? > bez tego parametru szybko się wykonuje i przechodzi test Bartek pisał co to oznacza. Cytuję z pamięci: 'dieharder idzie jeszcze dalej, wykonuje serię m testów i dla całej serii liczy x-kwadrat'. Bazowa wartość to (z tego co widzę) zazwyczaj 100. Gdy da się 1000, to ilość wynosi 100x1000=100tys - co potwierdza taka sama wartość w kolumnie psamples. Generator MT słynął z bardzo dużej równomierności, dlaczego w tak długim teście daje wartość rzędu zero na osmy miejscu po przecinku ? Coś nie tak z moim systemem? U Ciebie nie ma problemów? Pozdrawiam
[toc] | [prev] | [next] | [standalone]
| From | Borneq <borneq@antyspam.hidden.pl> |
|---|---|
| Date | 2016-10-07 02:23 +0200 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <nt6pts$339$1@node1.news.atman.pl> |
| In reply to | #29053 |
W dniu 07.10.2016 o 02:12, M.M. pisze: > Generator MT słynął z bardzo dużej równomierności, dlaczego w > tak długim teście daje wartość rzędu zero na osmy miejscu po > przecinku ? > > Coś nie tak z moim systemem? U Ciebie nie ma problemów? Nie wykonywałem na razie tak długiego testu. Dla plików binarnych było odwrotnie - gdy miał tak z 10 MB, brał go kilkakrotnie i test był failed. Dopiero kilkaset mega było dobre. Tutaj nie wiem - 100 tys testów, ale czy w kółko z tymi samymi liczbami pseudolosowymi? czy też generuje ich 1000 razy większą ilość niż dla standardowych testów?
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-10-06 17:29 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <fe12b13c-68a1-4f45-a9cf-4bbe9d473949@googlegroups.com> |
| In reply to | #29054 |
On Friday, October 7, 2016 at 2:23:25 AM UTC+2, Borneq wrote:
> W dniu 07.10.2016 o 02:12, M.M. pisze:
> > Generator MT słynął z bardzo dużej równomierności, dlaczego w
> > tak długim teście daje wartość rzędu zero na osmy miejscu po
> > przecinku ?
> >
> > Coś nie tak z moim systemem? U Ciebie nie ma problemów?
>
> Nie wykonywałem na razie tak długiego testu.
To tylko 30-40 minut czasu. Mogę mieć do Ciebie prośbę, abyś uruchomił
te same polecenia co wkleiłem? Na razie z dowolnym seedem.
> Dla plików binarnych było odwrotnie - gdy miał tak z 10 MB, brał
> go kilkakrotnie i test był failed.
Hmmm zapętlenie jest tożsame z krótszym okresem, gdy test pobiera
dużo liczb, to zapętlenie może właśnie powodować failed.
> Dopiero kilkaset mega było dobre.
Zgodnie z intuicją.
> Tutaj nie wiem - 100 tys
> testów, ale czy w kółko z tymi samymi liczbami pseudolosowymi? czy też
> generuje ich 1000 razy większą ilość niż dla standardowych testów?
TO polecenie które wpisałem generuje na bieżąco nowe liczby, niczego nie
zapętla, nic nie bierze z pliku - o ile wszystko rozumiem.
Mój generator (chyba) nie ma problemów z tym testem:
time ./rnd | dieharder -d 0 -g 200 -m 10
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second| Seed |
stdin_input_raw| 2.66e+07 |1251621916|
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment
#=============================================================================#
diehard_birthdays| 0| 100| 1000|0.21655610| PASSED
real 0m21.593s
user 0m24.910s
sys 0m0.762s
time ./rnd | dieharder -d 0 -g 200 -m 100
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second| Seed |
stdin_input_raw| 2.53e+07 |1344337559|
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment
#=============================================================================#
diehard_birthdays| 0| 100| 10000|0.58211684| PASSED
real 3m40.354s
user 4m11.789s
sys 0m8.076s
Dla m=1000 dam za chwilę.
Pozdrawiam
[toc] | [prev] | [next] | [standalone]
| From | Borneq <borneq@antyspam.hidden.pl> |
|---|---|
| Date | 2016-10-07 15:00 +0200 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <nt8691$ihf$1@node1.news.atman.pl> |
| In reply to | #29055 |
W dniu 07.10.2016 o 02:29, M.M. pisze: > To tylko 30-40 minut czasu. Mogę mieć do Ciebie prośbę, abyś uruchomił > te same polecenia co wkleiłem? Na razie z dowolnym seedem. Właśnie uruchomiłem
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-10-07 06:20 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <3204f809-2e63-409f-8ea1-30c902c2c5e0@googlegroups.com> |
| In reply to | #29058 |
On Friday, October 7, 2016 at 3:00:18 PM UTC+2, Borneq wrote: > W dniu 07.10.2016 o 02:29, M.M. pisze: > > To tylko 30-40 minut czasu. Mogę mieć do Ciebie prośbę, abyś uruchomił > > te same polecenia co wkleiłem? Na razie z dowolnym seedem. > > Właśnie uruchomiłem U Bartka też nie przeszło, więc to nie jest problem z moim systemem. Ale zobaczymy, może u Ciebie przejdzie testy. Nawiasem mówiąc, dostrzegam teraz zalety prostszej metody testowania, typu policz znaną całkę i porównaj wartość do wartości oczekiwanej. Liczenie x-kwadrat dla milionów punktów swobody pewnie trzeba na bignumie zaimplementować. Pozdrawiam
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2016-10-07 07:39 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <1af85f01-dabc-4163-9fc0-fec5fd89cf39@googlegroups.com> |
| In reply to | #29059 |
On Friday, October 7, 2016 at 3:20:51 PM UTC+2, M.M. wrote: > On Friday, October 7, 2016 at 3:00:18 PM UTC+2, Borneq wrote: > > W dniu 07.10.2016 o 02:29, M.M. pisze: > > > To tylko 30-40 minut czasu. Mogę mieć do Ciebie prośbę, abyś uruchomił > > > te same polecenia co wkleiłem? Na razie z dowolnym seedem. > > > > Właśnie uruchomiłem > > U Bartka też nie przeszło, więc to nie jest problem z moim systemem. > Ale zobaczymy, może u Ciebie przejdzie testy. > > Nawiasem mówiąc, dostrzegam teraz zalety prostszej metody > testowania, typu policz znaną całkę i porównaj wartość do > wartości oczekiwanej. Liczenie x-kwadrat dla milionów punktów > swobody pewnie trzeba na bignumie zaimplementować. Ale chyba niejest to szczególnie mocna metoda. Ciągi quasilosowe zaliczają ją lepiej niż losowe ;-) pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-10-07 07:51 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <0168ba6a-5609-42ab-acd7-d5f91c8804a8@googlegroups.com> |
| In reply to | #29060 |
On Friday, October 7, 2016 at 4:39:55 PM UTC+2, bartekltg wrote: > On Friday, October 7, 2016 at 3:20:51 PM UTC+2, M.M. wrote: > > On Friday, October 7, 2016 at 3:00:18 PM UTC+2, Borneq wrote: > > > W dniu 07.10.2016 o 02:29, M.M. pisze: > > > > To tylko 30-40 minut czasu. Mogę mieć do Ciebie prośbę, abyś uruchomił > > > > te same polecenia co wkleiłem? Na razie z dowolnym seedem. > > > > > > Właśnie uruchomiłem > > > > U Bartka też nie przeszło, więc to nie jest problem z moim systemem. > > Ale zobaczymy, może u Ciebie przejdzie testy. > > > > Nawiasem mówiąc, dostrzegam teraz zalety prostszej metody > > testowania, typu policz znaną całkę i porównaj wartość do > > wartości oczekiwanej. Liczenie x-kwadrat dla milionów punktów > > swobody pewnie trzeba na bignumie zaimplementować. > > > Ale chyba niejest to szczególnie mocna metoda. > > Ciągi quasilosowe zaliczają ją lepiej niż losowe ;-) > Po zastanowieniu myślę że to jest to samo. Gdy liczymy całkę to mamy dwa wyniki losowania: rand_y > f(rand_x) albo rand_y <= f(rand_x) czyli jeden punkt swobody. Na dobrą sprawę też możemy zastosować do tego x-kwadrat z jednym punktem swobody. Pytanie co lepsze? Czy lepiej policzyć całkę przy pomocy 10^10 losowań, czy lepiej policzyć 1000 całek, każdą przy pomocy 10^7 losowań. Jeden generator przejdzie lepiej pierwszy test, drugi lepiej wypadnie w drugim teście. Gdy nie podstawimy do x-kwadrat, czyli gdy weźmiemy po prostu odchylenie standardowe od wartości oczekiwanej, to mamy na pewno inny problem: nie możemy łatwo porównać wyników z kilku różnych testów. Pozdrawiam
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2016-10-07 08:00 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <bff6dacc-9f92-4f03-bc1e-a0886c0072d1@googlegroups.com> |
| In reply to | #29062 |
On Friday, October 7, 2016 at 4:52:01 PM UTC+2, M.M. wrote: > On Friday, October 7, 2016 at 4:39:55 PM UTC+2, bartekltg wrote: > > On Friday, October 7, 2016 at 3:20:51 PM UTC+2, M.M. wrote: > > > On Friday, October 7, 2016 at 3:00:18 PM UTC+2, Borneq wrote: > > > > W dniu 07.10.2016 o 02:29, M.M. pisze: > > > > > To tylko 30-40 minut czasu. Mogę mieć do Ciebie prośbę, abyś uruchomił > > > > > te same polecenia co wkleiłem? Na razie z dowolnym seedem. > > > > > > > > Właśnie uruchomiłem > > > > > > U Bartka też nie przeszło, więc to nie jest problem z moim systemem. > > > Ale zobaczymy, może u Ciebie przejdzie testy. > > > > > > Nawiasem mówiąc, dostrzegam teraz zalety prostszej metody > > > testowania, typu policz znaną całkę i porównaj wartość do > > > wartości oczekiwanej. Liczenie x-kwadrat dla milionów punktów > > > swobody pewnie trzeba na bignumie zaimplementować. > > > > > > Ale chyba niejest to szczególnie mocna metoda. > > > > Ciągi quasilosowe zaliczają ją lepiej niż losowe ;-) > > > > Po zastanowieniu myślę że to jest to samo. Gdy liczymy całkę to mamy > dwa wyniki losowania: > rand_y > f(rand_x) albo rand_y <= f(rand_x) > czyli jeden punkt swobody. Na dobrą sprawę też możemy zastosować do > tego x-kwadrat z jednym punktem swobody. Nic nie rozumiem. Co jest "to samo" z czym? > Gdy nie podstawimy do x-kwadrat, czyli gdy weźmiemy po prostu > odchylenie standardowe od wartości oczekiwanej, to mamy na pewno > inny problem: nie możemy łatwo porównać wyników z kilku różnych > testów. Oczywiścei, ze możemy. Robimy test \chi^2 albo kołgomorowa na hipotezę, że otrzyamny rozkąłd jest normalny. ;-) pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-10-07 08:21 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <9216121f-7c5a-4687-b999-52e5f0797563@googlegroups.com> |
| In reply to | #29063 |
On Friday, October 7, 2016 at 5:00:55 PM UTC+2, bartekltg wrote: > On Friday, October 7, 2016 at 4:52:01 PM UTC+2, M.M. wrote: > > On Friday, October 7, 2016 at 4:39:55 PM UTC+2, bartekltg wrote: > > > On Friday, October 7, 2016 at 3:20:51 PM UTC+2, M.M. wrote: > > > > On Friday, October 7, 2016 at 3:00:18 PM UTC+2, Borneq wrote: > > > > > W dniu 07.10.2016 o 02:29, M.M. pisze: > > > > > > To tylko 30-40 minut czasu. Mogę mieć do Ciebie prośbę, abyś uruchomił > > > > > > te same polecenia co wkleiłem? Na razie z dowolnym seedem. > > > > > > > > > > Właśnie uruchomiłem > > > > > > > > U Bartka też nie przeszło, więc to nie jest problem z moim systemem. > > > > Ale zobaczymy, może u Ciebie przejdzie testy. > > > > > > > > Nawiasem mówiąc, dostrzegam teraz zalety prostszej metody > > > > testowania, typu policz znaną całkę i porównaj wartość do > > > > wartości oczekiwanej. Liczenie x-kwadrat dla milionów punktów > > > > swobody pewnie trzeba na bignumie zaimplementować. > > > > > > > > > Ale chyba niejest to szczególnie mocna metoda. > > > > > > Ciągi quasilosowe zaliczają ją lepiej niż losowe ;-) > > > > > > > Po zastanowieniu myślę że to jest to samo. Gdy liczymy całkę to mamy > > dwa wyniki losowania: > > rand_y > f(rand_x) albo rand_y <= f(rand_x) > > czyli jeden punkt swobody. Na dobrą sprawę też możemy zastosować do > > tego x-kwadrat z jednym punktem swobody. > > > Nic nie rozumiem. > Co jest "to samo" z czym? Jeśli po prostu policzymy całkę metodą MT i porównamy jej wartość z wartością teoretyczną, to mamy bardzo podobną metodę do chi-kwadrat. We wzorku na chi-kwadrat też odejmujemy wartość uzyskaną od oczekiwanej - czyli bazowa wartość jest obliczana bardzo podobnie. > > Gdy nie podstawimy do x-kwadrat, czyli gdy weźmiemy po prostu > > odchylenie standardowe od wartości oczekiwanej, to mamy na pewno > > inny problem: nie możemy łatwo porównać wyników z kilku różnych > > testów. > > Oczywiścei, ze możemy. Robimy test \chi^2 albo kołgomorowa > na hipotezę, że otrzyamny rozkąłd jest normalny. No w ogóle możemy, ale właśnie chodziło mi o to, jakbyśmy nie podstawiali wyników do chi-kwadrat, to nie możemy :) To jest wada liczenia samych całek bez testowania rozkładu. Gdy policzymy dwie całki i w jednej mamy odchylenie od wartosci oczekiwanej równe 5 a w drugiej 0.1, to bez chi-kwadrat nie wiemy która wartość lepiej świadczy o losowości generatora. Np. drugi generator uzyskał wartości w tych całkach 6 i 0.05 - nie wiemy bez chi-kwadrat który jest bardziej równomierny. Na pewno jeśli kolejny gnerator uzyska w testach wartość 4 i 0.05 to będzie bardziej równomierny niż dwa poprzednie. Pozdrawiam
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2016-10-07 09:02 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <3118d1bf-46a1-47dc-b9fb-85da7f2fd7f8@googlegroups.com> |
| In reply to | #29065 |
On Friday, October 7, 2016 at 5:21:45 PM UTC+2, M.M. wrote: > On Friday, October 7, 2016 at 5:00:55 PM UTC+2, bartekltg wrote: > > On Friday, October 7, 2016 at 4:52:01 PM UTC+2, M.M. wrote: > > > On Friday, October 7, 2016 at 4:39:55 PM UTC+2, bartekltg wrote: > > > > On Friday, October 7, 2016 at 3:20:51 PM UTC+2, M.M. wrote: > > > > > On Friday, October 7, 2016 at 3:00:18 PM UTC+2, Borneq wrote: > > > > > > W dniu 07.10.2016 o 02:29, M.M. pisze: > > > > > > > To tylko 30-40 minut czasu. Mogę mieć do Ciebie prośbę, abyś uruchomił > > > > > > > te same polecenia co wkleiłem? Na razie z dowolnym seedem. > > > > > > > > > > > > Właśnie uruchomiłem > > > > > > > > > > U Bartka też nie przeszło, więc to nie jest problem z moim systemem. > > > > > Ale zobaczymy, może u Ciebie przejdzie testy. > > > > > > > > > > Nawiasem mówiąc, dostrzegam teraz zalety prostszej metody > > > > > testowania, typu policz znaną całkę i porównaj wartość do > > > > > wartości oczekiwanej. Liczenie x-kwadrat dla milionów punktów > > > > > swobody pewnie trzeba na bignumie zaimplementować. > > > > > > > > > > > > Ale chyba niejest to szczególnie mocna metoda. > > > > > > > > Ciągi quasilosowe zaliczają ją lepiej niż losowe ;-) > > > > > > > > > > Po zastanowieniu myślę że to jest to samo. Gdy liczymy całkę to mamy > > > dwa wyniki losowania: > > > rand_y > f(rand_x) albo rand_y <= f(rand_x) > > > czyli jeden punkt swobody. Na dobrą sprawę też możemy zastosować do > > > tego x-kwadrat z jednym punktem swobody. > > > > > > Nic nie rozumiem. > > Co jest "to samo" z czym? > > Jeśli po prostu policzymy całkę metodą MT i porównamy jej wartość z > wartością teoretyczną, to mamy bardzo podobną metodę do chi-kwadrat. Nie. Podałem Ci kontrprzykład. Ciagów bardzo nielosowych, które dają znacznie lepsze oszacowania MC. > > > > > > > Gdy nie podstawimy do x-kwadrat, czyli gdy weźmiemy po prostu > > > odchylenie standardowe od wartości oczekiwanej, to mamy na pewno > > > inny problem: nie możemy łatwo porównać wyników z kilku różnych > > > testów. > > > > Oczywiścei, ze możemy. Robimy test \chi^2 albo kołgomorowa > > na hipotezę, że otrzyamny rozkąłd jest normalny. > > No w ogóle możemy, ale właśnie chodziło mi o to, jakbyśmy nie > podstawiali wyników do chi-kwadrat, to nie możemy :) To jest > wada liczenia samych całek bez testowania rozkładu. Sam zauwązyłeś, że test polegający na popatrzeniu, czy wynik jest w miare blisko teoretycznegio, jest marny. Bo z czym to niby porównać. Testowanie hipotez ma mi dać jakeiś prawdopodobieństwo. > Gdy policzymy dwie całki i w jednej mamy odchylenie od wartosci > oczekiwanej równe 5 a w drugiej 0.1, to bez chi-kwadrat nie wiemy > która wartość lepiej świadczy o losowości generatora. Np. drugi > generator uzyskał wartości w tych całkach 6 i 0.05 - nie wiemy > bez chi-kwadrat który jest bardziej równomierny. Na pewno jeśli > kolejny gnerator uzyska w testach wartość 4 i 0.05 to będzie > bardziej równomierny niż dwa poprzednie. A czemu maiłbym liczyć to w tak niedokładny i niemądry sposób? Przecie wariancję, jak powinna wyjść, moge policzyć całką. http://mst.mimuw.edu.pl/wyklady/sst/wyklad.pdf [koniec strony 57] To po prostu wariancja funkcji / sqrt(n) Nieco szerzej: jeśli interesuje Cię tylko liczenie całek, wypóbowywanie generaotra na całkach możę meić pewien test. W żadnym razie nie zgodziłbym si e jednak ze stweirdzeniem, że to jest równie sily zestaw testów i jego pozytywne przejśćei można uznać za potwierdzenie ogolnej jakości generatora. Nawet przygotowywałbym się na słuszna zarzuty, że i prz zastosowaniach calkowania takie badanie nie jest specjalnie przekonujące. pzdr bartekltg pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-10-07 10:40 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <0ce270cc-f76d-47c5-a9b5-0a566ac9fe50@googlegroups.com> |
| In reply to | #29067 |
On Friday, October 7, 2016 at 6:02:59 PM UTC+2, bartekltg wrote:
> Nie. Podałem Ci kontrprzykład.
> Ciagów bardzo nielosowych, które dają znacznie lepsze oszacowania MC.
Ok, nie ciągnijmy, bo za dużo obwarowań. Generalnie wiadomo, że ciąg
doskonale równomierny może dać lepsze oszacowanie całki niż ciąg
naprawdę losowy - nie o to chciałem się kłócić.
Popatrzmy lepiej na wpływ parametru k w dieharder.
Upewnijmy się, że mamy ciągle ten sam seed i ten sam ciąg liczb
pseudo losowych:
x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 1 -k 1
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second|
mt19937_1998| 7.99e+07 |
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
#=============================================================================#
diehard_birthdays| 0| 100| 100|0.92170613| PASSED | 1234
real 0m1.822s
user 0m1.817s
sys 0m0.004s
x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 1 -k 0
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second|
mt19937_1998| 8.08e+07 |
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
#=============================================================================#
diehard_birthdays| 0| 100| 100|0.92170613| PASSED | 1234
real 0m1.817s
user 0m1.808s
sys 0m0.008s
Wynik ten sam z dokładnością do 8 miejsc po przecinku, więc ciąg ten sam.
Zwiększamy m=100 (10tys testów)
x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 0
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second|
mt19937_1998| 8.40e+07 |
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
#=============================================================================#
diehard_birthdays| 0| 100| 10000|0.01512520| PASSED | 1234
real 3m0.888s
user 3m0.475s
sys 0m0.436s
x@x:~$
x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 0
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second|
mt19937_1998| 8.44e+07 |
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
#=============================================================================#
diehard_birthdays| 0| 100| 10000|0.01512520| PASSED | 1234
real 3m6.036s
user 3m5.858s
sys 0m0.104s
Znowu wynik ten sam, więc możemy być pewni że ciąg ten sam.
Zmieniam k=1
x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 1
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second|
mt19937_1998| 8.36e+07 |
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
#=============================================================================#
diehard_birthdays| 0| 100| 10000|0.01514407| PASSED | 1234
real 3m2.390s
user 3m2.357s
sys 0m0.052s
Widać malą różnicę w wyniku.
Dajemy k=2
x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 2
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second|
mt19937_1998| 8.43e+07 |
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
#=============================================================================#
diehard_birthdays| 0| 100| 10000|0.01514407| PASSED | 1234
real 3m5.804s
user 3m5.475s
sys 0m0.315s
Wynik taki sam jak dla k=1
Teraz k=3
x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 3
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second|
mt19937_1998| 6.64e+07 |
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
#=============================================================================#
diehard_birthdays| 0| 100| 10000|0.00283496| WEAK | 1234
real 3m16.142s
user 3m15.666s
sys 0m0.336s
Upssss wynik zupełnie inny.
teraz k=4
x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 4
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second|
mt19937_1998| 8.05e+07 |
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
#=============================================================================#
diehard_birthdays| 0| 100| 10000|0.00283496| WEAK | 1234
real 3m12.022s
user 3m11.777s
sys 0m0.137s
To samo co dla k=3
Różnic w czasie wykonania dużych nie ma. Mój wniosek: testy mogą być
liczone na precyzji jaką oferuje sprzętowo procesor, ale wzorek na
chi-kwadrat powinien być liczony na bignumie. Jeśli wersja szybka
pada już dla m=100, to wersja dokładna pewnie też padnie dla większych
wartości m.
Pozdrawiam
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2016-10-07 19:58 +0200 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <nt8nnm$56f$1@node2.news.atman.pl> |
| In reply to | #29069 |
On 07.10.2016 19:40, M.M. wrote: > On Friday, October 7, 2016 at 6:02:59 PM UTC+2, bartekltg wrote: >> Nie. Podałem Ci kontrprzykład. >> Ciagów bardzo nielosowych, które dają znacznie lepsze oszacowania MC. > Ok, nie ciągnijmy, bo za dużo obwarowań. Generalnie wiadomo, że ciąg > doskonale równomierny może dać lepsze oszacowanie całki niż ciąg > naprawdę losowy - nie o to chciałem się kłócić. > > > Popatrzmy lepiej na wpływ parametru k w dieharder. > > > Upewnijmy się, że mamy ciągle ten sam seed i ten sam ciąg liczb > pseudo losowych: > > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 1 -k 1 > #=============================================================================# > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown # > #=============================================================================# > rng_name |rands/second| > mt19937_1998| 7.99e+07 | > #=============================================================================# > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed > #=============================================================================# > diehard_birthdays| 0| 100| 100|0.92170613| PASSED | 1234 > > real 0m1.822s > user 0m1.817s > sys 0m0.004s > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 1 -k 0 > #=============================================================================# > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown # > #=============================================================================# > rng_name |rands/second| > mt19937_1998| 8.08e+07 | > #=============================================================================# > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed > #=============================================================================# > diehard_birthdays| 0| 100| 100|0.92170613| PASSED | 1234 > real 0m1.817s > user 0m1.808s > sys 0m0.008s > > Wynik ten sam z dokładnością do 8 miejsc po przecinku, więc ciąg ten sam. > > > > Zwiększamy m=100 (10tys testów) > > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 0 > #=============================================================================# > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown # > #=============================================================================# > rng_name |rands/second| > mt19937_1998| 8.40e+07 | > #=============================================================================# > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed > #=============================================================================# > diehard_birthdays| 0| 100| 10000|0.01512520| PASSED | 1234 > > real 3m0.888s > user 3m0.475s > sys 0m0.436s > > > x@x:~$ > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 0 > #=============================================================================# > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown # > #=============================================================================# > rng_name |rands/second| > mt19937_1998| 8.44e+07 | > #=============================================================================# > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed > #=============================================================================# > diehard_birthdays| 0| 100| 10000|0.01512520| PASSED | 1234 > > real 3m6.036s > user 3m5.858s > sys 0m0.104s > > Znowu wynik ten sam, więc możemy być pewni że ciąg ten sam. > > > Zmieniam k=1 > > > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 1 > #=============================================================================# > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown # > #=============================================================================# > rng_name |rands/second| > mt19937_1998| 8.36e+07 | > #=============================================================================# > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed > #=============================================================================# > diehard_birthdays| 0| 100| 10000|0.01514407| PASSED | 1234 > > real 3m2.390s > user 3m2.357s > sys 0m0.052s > > Widać malą różnicę w wyniku. > > Dajemy k=2 > > > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 2 > #=============================================================================# > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown # > #=============================================================================# > rng_name |rands/second| > mt19937_1998| 8.43e+07 | > #=============================================================================# > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed > #=============================================================================# > diehard_birthdays| 0| 100| 10000|0.01514407| PASSED | 1234 > > real 3m5.804s > user 3m5.475s > sys 0m0.315s > > > Wynik taki sam jak dla k=1 > > Teraz k=3 > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 3 > #=============================================================================# > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown # > #=============================================================================# > rng_name |rands/second| > mt19937_1998| 6.64e+07 | > #=============================================================================# > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed > #=============================================================================# > diehard_birthdays| 0| 100| 10000|0.00283496| WEAK | 1234 > > real 3m16.142s > user 3m15.666s > sys 0m0.336s > > Upssss wynik zupełnie inny. > > > teraz k=4 > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 4 > #=============================================================================# > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown # > #=============================================================================# > rng_name |rands/second| > mt19937_1998| 8.05e+07 | > #=============================================================================# > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed > #=============================================================================# > diehard_birthdays| 0| 100| 10000|0.00283496| WEAK | 1234 > > real 3m12.022s > user 3m11.777s > sys 0m0.137s > > To samo co dla k=3 > > Różnic w czasie wykonania dużych nie ma. Mój wniosek: testy mogą być > liczone na precyzji jaką oferuje sprzętowo procesor, ale wzorek na > chi-kwadrat powinien być liczony na bignumie. Jeśli wersja szybka > pada już dla m=100, to wersja dokładna pewnie też padnie dla większych > wartości m. Nie, wersja -k 2 jest stabilna numerycznie. Tak twierdzi dokumentacja. A nawet więcewj, wprost mówią, że wynik różni się od dokładnego tylko o precyzje numeryczną. cyli jaskby uwarunkowanie było 1. @Wersja szybka: 0 is fast but slightly sloppy for psamples > 4999 (default). A Ty masz 10 000. Na -k 3 szkoda procesora. 3 is kuiper ks, fast, quite inaccurate for small samples, deprecated. pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-10-07 15:25 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <b344098a-c870-4029-890a-27fa63886657@googlegroups.com> |
| In reply to | #29070 |
On Friday, October 7, 2016 at 7:58:16 PM UTC+2, bartekltg wrote:
> On 07.10.2016 19:40, M.M. wrote:
> > On Friday, October 7, 2016 at 6:02:59 PM UTC+2, bartekltg wrote:
> >> Nie. Podałem Ci kontrprzykład.
> >> Ciagów bardzo nielosowych, które dają znacznie lepsze oszacowania MC.
> > Ok, nie ciągnijmy, bo za dużo obwarowań. Generalnie wiadomo, że ciąg
> > doskonale równomierny może dać lepsze oszacowanie całki niż ciąg
> > naprawdę losowy - nie o to chciałem się kłócić.
> >
> >
> > Popatrzmy lepiej na wpływ parametru k w dieharder.
> >
> >
> > Upewnijmy się, że mamy ciągle ten sam seed i ten sam ciąg liczb
> > pseudo losowych:
> >
> > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 1 -k 1
> > #=============================================================================#
> > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > #=============================================================================#
> > rng_name |rands/second|
> > mt19937_1998| 7.99e+07 |
> > #=============================================================================#
> > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > #=============================================================================#
> > diehard_birthdays| 0| 100| 100|0.92170613| PASSED | 1234
> >
> > real 0m1.822s
> > user 0m1.817s
> > sys 0m0.004s
> > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 1 -k 0
> > #=============================================================================#
> > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > #=============================================================================#
> > rng_name |rands/second|
> > mt19937_1998| 8.08e+07 |
> > #=============================================================================#
> > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > #=============================================================================#
> > diehard_birthdays| 0| 100| 100|0.92170613| PASSED | 1234
> > real 0m1.817s
> > user 0m1.808s
> > sys 0m0.008s
> >
> > Wynik ten sam z dokładnością do 8 miejsc po przecinku, więc ciąg ten sam.
> >
> >
> >
> > Zwiększamy m=100 (10tys testów)
> >
> > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 0
> > #=============================================================================#
> > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > #=============================================================================#
> > rng_name |rands/second|
> > mt19937_1998| 8.40e+07 |
> > #=============================================================================#
> > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > #=============================================================================#
> > diehard_birthdays| 0| 100| 10000|0.01512520| PASSED | 1234
> >
> > real 3m0.888s
> > user 3m0.475s
> > sys 0m0.436s
> >
> >
> > x@x:~$
> > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 0
> > #=============================================================================#
> > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > #=============================================================================#
> > rng_name |rands/second|
> > mt19937_1998| 8.44e+07 |
> > #=============================================================================#
> > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > #=============================================================================#
> > diehard_birthdays| 0| 100| 10000|0.01512520| PASSED | 1234
> >
> > real 3m6.036s
> > user 3m5.858s
> > sys 0m0.104s
> >
> > Znowu wynik ten sam, więc możemy być pewni że ciąg ten sam.
> >
> >
> > Zmieniam k=1
> >
> >
> > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 1
> > #=============================================================================#
> > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > #=============================================================================#
> > rng_name |rands/second|
> > mt19937_1998| 8.36e+07 |
> > #=============================================================================#
> > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > #=============================================================================#
> > diehard_birthdays| 0| 100| 10000|0.01514407| PASSED | 1234
> >
> > real 3m2.390s
> > user 3m2.357s
> > sys 0m0.052s
> >
> > Widać malą różnicę w wyniku.
> >
> > Dajemy k=2
> >
> >
> > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 2
> > #=============================================================================#
> > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > #=============================================================================#
> > rng_name |rands/second|
> > mt19937_1998| 8.43e+07 |
> > #=============================================================================#
> > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > #=============================================================================#
> > diehard_birthdays| 0| 100| 10000|0.01514407| PASSED | 1234
> >
> > real 3m5.804s
> > user 3m5.475s
> > sys 0m0.315s
> >
> >
> > Wynik taki sam jak dla k=1
> >
> > Teraz k=3
> > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 3
> > #=============================================================================#
> > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > #=============================================================================#
> > rng_name |rands/second|
> > mt19937_1998| 6.64e+07 |
> > #=============================================================================#
> > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > #=============================================================================#
> > diehard_birthdays| 0| 100| 10000|0.00283496| WEAK | 1234
> >
> > real 3m16.142s
> > user 3m15.666s
> > sys 0m0.336s
> >
> > Upssss wynik zupełnie inny.
> >
> >
> > teraz k=4
> > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 4
> > #=============================================================================#
> > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > #=============================================================================#
> > rng_name |rands/second|
> > mt19937_1998| 8.05e+07 |
> > #=============================================================================#
> > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > #=============================================================================#
> > diehard_birthdays| 0| 100| 10000|0.00283496| WEAK | 1234
> >
> > real 3m12.022s
> > user 3m11.777s
> > sys 0m0.137s
> >
> > To samo co dla k=3
> >
> > Różnic w czasie wykonania dużych nie ma. Mój wniosek: testy mogą być
> > liczone na precyzji jaką oferuje sprzętowo procesor, ale wzorek na
> > chi-kwadrat powinien być liczony na bignumie. Jeśli wersja szybka
> > pada już dla m=100, to wersja dokładna pewnie też padnie dla większych
> > wartości m.
>
> Nie, wersja -k 2 jest stabilna numerycznie.
> Tak twierdzi dokumentacja.
> A nawet więcewj, wprost mówią, że wynik różni się od dokładnego
> tylko o precyzje numeryczną. cyli jaskby uwarunkowanie było 1.
>
>
> @Wersja szybka:
> 0 is fast but slightly sloppy for psamples > 4999 (default).
> A Ty masz 10 000.
>
> Na -k 3 szkoda procesora.
> 3 is kuiper ks, fast, quite inaccurate for small samples, deprecated.
>
> pzdr
> bartekltg
Jeśli testy są dobrze zaimplementowane i jeśli dla k=2 mamy dokładność
taką ile cyfr ma typ procesora, to MT nie przechodzi testu dnia urodzin -
przynajmniej dla zarodka=1234. Mamy tylko dwie tysięczne procenta że
liczby pochodziły z generatora równomiernego:
time dieharder -s 1 -S 1234 -d 0 -g 15 -m 1000 -k 2
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second|
mt19937_1998| 1.17e+07 |
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
#=============================================================================#
diehard_birthdays| 0| 100| 100000|0.00002404| WEAK | 1234
real 45m32.815s
user 45m26.558s
sys 0m4.484s
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-10-07 17:32 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <239406e7-4195-45b7-8c73-0a15f76be316@googlegroups.com> |
| In reply to | #29071 |
On Saturday, October 8, 2016 at 12:25:41 AM UTC+2, M.M. wrote:
> On Friday, October 7, 2016 at 7:58:16 PM UTC+2, bartekltg wrote:
> > On 07.10.2016 19:40, M.M. wrote:
> > > On Friday, October 7, 2016 at 6:02:59 PM UTC+2, bartekltg wrote:
> > >> Nie. Podałem Ci kontrprzykład.
> > >> Ciagów bardzo nielosowych, które dają znacznie lepsze oszacowania MC.
> > > Ok, nie ciągnijmy, bo za dużo obwarowań. Generalnie wiadomo, że ciąg
> > > doskonale równomierny może dać lepsze oszacowanie całki niż ciąg
> > > naprawdę losowy - nie o to chciałem się kłócić.
> > >
> > >
> > > Popatrzmy lepiej na wpływ parametru k w dieharder.
> > >
> > >
> > > Upewnijmy się, że mamy ciągle ten sam seed i ten sam ciąg liczb
> > > pseudo losowych:
> > >
> > > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 1 -k 1
> > > #=============================================================================#
> > > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > > #=============================================================================#
> > > rng_name |rands/second|
> > > mt19937_1998| 7.99e+07 |
> > > #=============================================================================#
> > > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > > #=============================================================================#
> > > diehard_birthdays| 0| 100| 100|0.92170613| PASSED | 1234
> > >
> > > real 0m1.822s
> > > user 0m1.817s
> > > sys 0m0.004s
> > > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 1 -k 0
> > > #=============================================================================#
> > > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > > #=============================================================================#
> > > rng_name |rands/second|
> > > mt19937_1998| 8.08e+07 |
> > > #=============================================================================#
> > > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > > #=============================================================================#
> > > diehard_birthdays| 0| 100| 100|0.92170613| PASSED | 1234
> > > real 0m1.817s
> > > user 0m1.808s
> > > sys 0m0.008s
> > >
> > > Wynik ten sam z dokładnością do 8 miejsc po przecinku, więc ciąg ten sam.
> > >
> > >
> > >
> > > Zwiększamy m=100 (10tys testów)
> > >
> > > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 0
> > > #=============================================================================#
> > > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > > #=============================================================================#
> > > rng_name |rands/second|
> > > mt19937_1998| 8.40e+07 |
> > > #=============================================================================#
> > > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > > #=============================================================================#
> > > diehard_birthdays| 0| 100| 10000|0.01512520| PASSED | 1234
> > >
> > > real 3m0.888s
> > > user 3m0.475s
> > > sys 0m0.436s
> > >
> > >
> > > x@x:~$
> > > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 0
> > > #=============================================================================#
> > > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > > #=============================================================================#
> > > rng_name |rands/second|
> > > mt19937_1998| 8.44e+07 |
> > > #=============================================================================#
> > > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > > #=============================================================================#
> > > diehard_birthdays| 0| 100| 10000|0.01512520| PASSED | 1234
> > >
> > > real 3m6.036s
> > > user 3m5.858s
> > > sys 0m0.104s
> > >
> > > Znowu wynik ten sam, więc możemy być pewni że ciąg ten sam.
> > >
> > >
> > > Zmieniam k=1
> > >
> > >
> > > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 1
> > > #=============================================================================#
> > > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > > #=============================================================================#
> > > rng_name |rands/second|
> > > mt19937_1998| 8.36e+07 |
> > > #=============================================================================#
> > > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > > #=============================================================================#
> > > diehard_birthdays| 0| 100| 10000|0.01514407| PASSED | 1234
> > >
> > > real 3m2.390s
> > > user 3m2.357s
> > > sys 0m0.052s
> > >
> > > Widać malą różnicę w wyniku.
> > >
> > > Dajemy k=2
> > >
> > >
> > > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 2
> > > #=============================================================================#
> > > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > > #=============================================================================#
> > > rng_name |rands/second|
> > > mt19937_1998| 8.43e+07 |
> > > #=============================================================================#
> > > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > > #=============================================================================#
> > > diehard_birthdays| 0| 100| 10000|0.01514407| PASSED | 1234
> > >
> > > real 3m5.804s
> > > user 3m5.475s
> > > sys 0m0.315s
> > >
> > >
> > > Wynik taki sam jak dla k=1
> > >
> > > Teraz k=3
> > > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 3
> > > #=============================================================================#
> > > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > > #=============================================================================#
> > > rng_name |rands/second|
> > > mt19937_1998| 6.64e+07 |
> > > #=============================================================================#
> > > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > > #=============================================================================#
> > > diehard_birthdays| 0| 100| 10000|0.00283496| WEAK | 1234
> > >
> > > real 3m16.142s
> > > user 3m15.666s
> > > sys 0m0.336s
> > >
> > > Upssss wynik zupełnie inny.
> > >
> > >
> > > teraz k=4
> > > x@x:~$ time dieharder -s 1 -S 1234 -d 0 -g 15 -m 100 -k 4
> > > #=============================================================================#
> > > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> > > #=============================================================================#
> > > rng_name |rands/second|
> > > mt19937_1998| 8.05e+07 |
> > > #=============================================================================#
> > > test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> > > #=============================================================================#
> > > diehard_birthdays| 0| 100| 10000|0.00283496| WEAK | 1234
> > >
> > > real 3m12.022s
> > > user 3m11.777s
> > > sys 0m0.137s
> > >
> > > To samo co dla k=3
> > >
> > > Różnic w czasie wykonania dużych nie ma. Mój wniosek: testy mogą być
> > > liczone na precyzji jaką oferuje sprzętowo procesor, ale wzorek na
> > > chi-kwadrat powinien być liczony na bignumie. Jeśli wersja szybka
> > > pada już dla m=100, to wersja dokładna pewnie też padnie dla większych
> > > wartości m.
> >
> > Nie, wersja -k 2 jest stabilna numerycznie.
> > Tak twierdzi dokumentacja.
> > A nawet więcewj, wprost mówią, że wynik różni się od dokładnego
> > tylko o precyzje numeryczną. cyli jaskby uwarunkowanie było 1.
> >
> >
> > @Wersja szybka:
> > 0 is fast but slightly sloppy for psamples > 4999 (default).
> > A Ty masz 10 000.
> >
> > Na -k 3 szkoda procesora.
> > 3 is kuiper ks, fast, quite inaccurate for small samples, deprecated.
> >
> > pzdr
> > bartekltg
>
> Jeśli testy są dobrze zaimplementowane i jeśli dla k=2 mamy dokładność
> taką ile cyfr ma typ procesora, to MT nie przechodzi testu dnia urodzin -
> przynajmniej dla zarodka=1234. Mamy tylko dwie tysięczne procenta że
> liczby pochodziły z generatora równomiernego:
>
> time dieharder -s 1 -S 1234 -d 0 -g 15 -m 1000 -k 2
> #=============================================================================#
> # dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
> #=============================================================================#
> rng_name |rands/second|
> mt19937_1998| 1.17e+07 |
> #=============================================================================#
> test_name |ntup| tsamples |psamples| p-value |Assessment| Seed
> #=============================================================================#
> diehard_birthdays| 0| 100| 100000|0.00002404| WEAK | 1234
>
> real 45m32.815s
> user 45m26.558s
> sys 0m4.484s
Mój genrator też pada - trudno w to uwierzyć:
time ./rnd | dieharder -d 0 -g 200 -m 1000 -k 2
#=============================================================================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown #
#=============================================================================#
rng_name |rands/second| Seed |
stdin_input_raw| 3.86e+06 | 112439049|
#=============================================================================#
test_name |ntup| tsamples |psamples| p-value |Assessment
#=============================================================================#
diehard_birthdays| 0| 100| 100000|0.00000000| FAILED
real 64m33.741s
user 69m51.698s
sys 1m18.357s
Nie wiem jak dieharder ma to zaimplementowane. Standardowa funkcja
tgamma dla wartości powyżej 50 zaczyna dziwne rzeczy zwracać :)
Albo mają jakąś sprytną implementację, albo używają bignuma, albo
jednak dieharder nie działa poprawnie dla m > 300. Myślę, że
dieharder ma problem z dużymi m, a jego źródłem są właśnie
trudności w liczeniu funkcji gamma.
Pozdrawiam
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2016-10-08 09:52 +0200 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <nta8jv$lue$2@node2.news.atman.pl> |
| In reply to | #29071 |
On 08.10.2016 00:25, M.M. wrote: > Jeśli testy są dobrze zaimplementowane i jeśli dla k=2 mamy dokładność > taką ile cyfr ma typ procesora, to MT nie przechodzi testu dnia urodzin - > przynajmniej dla zarodka=1234. Mamy tylko dwie tysięczne procenta że > liczby pochodziły z generatora równomiernego: Wróć kilka postrów, wklajałem tam omówienie, co może być przyczyną nieprzechodzenia przez poprawne generatory testów dla b.dużych próbek. pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2016-10-08 05:00 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <29551b72-e2f6-4655-8ada-746ddc56fb75@googlegroups.com> |
| In reply to | #29073 |
On Saturday, October 8, 2016 at 9:52:31 AM UTC+2, bartekltg wrote: > On 08.10.2016 00:25, M.M. wrote: > > Jeśli testy są dobrze zaimplementowane i jeśli dla k=2 mamy dokładność > > taką ile cyfr ma typ procesora, to MT nie przechodzi testu dnia urodzin - > > przynajmniej dla zarodka=1234. Mamy tylko dwie tysięczne procenta że > > liczby pochodziły z generatora równomiernego: > > Wróć kilka postrów, wklajałem tam omówienie, co może > być przyczyną nieprzechodzenia przez poprawne generatory > testów dla b.dużych próbek. > > pzdr > bartekltg Tak czy inaczej, test powinien być tak napisany, że nie wywali się nigdy. Albo powinien być napisany na GMP, albo nie powinien przyjmować parametrów dla których może się wywalić. Pozdrawiam
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2016-10-07 07:47 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <89a3f02e-c126-47ff-9904-9ba933e54702@googlegroups.com> |
| In reply to | #29059 |
On Friday, October 7, 2016 at 3:20:51 PM UTC+2, M.M. wrote: > On Friday, October 7, 2016 at 3:00:18 PM UTC+2, Borneq wrote: > > W dniu 07.10.2016 o 02:29, M.M. pisze: > > > To tylko 30-40 minut czasu. Mogę mieć do Ciebie prośbę, abyś uruchomił > > > te same polecenia co wkleiłem? Na razie z dowolnym seedem. > > > > Właśnie uruchomiłem > > U Bartka też nie przeszło, więc to nie jest problem z moim systemem. > Ale zobaczymy, może u Ciebie przejdzie testy. > > Nawiasem mówiąc, dostrzegam teraz zalety prostszej metody > testowania, typu policz znaną całkę i porównaj wartość do > wartości oczekiwanej. To chyba dośc kiepska metoda. Niby można myślać o dowolnie skomplikowanych funkcjach (będa one odtwarazac cześć znanych testów:) ale np ciągi quasilosowe będą takie próby przechodzić nawet lepiej niż (pseudo)losowe! że jest problem zauważysz dopiero, gdy popatrzysz na rozkład wyników. Powinny tworzyć ~gausika (estymator MC jest asymptotycznie normalny) a dla pewnych ciągów będą tworzyć jakiś inny kształt, znacznie bliższy wartośći oczekiwanej (wartośći całki). > Liczenie x-kwadrat dla milionów punktów > swobody pewnie trzeba na bignumie zaimplementować. Ojtam ojtam:) Zresztą, jak an jeden punkt idą tysięce liczb losowych, to mnożenie liczb podwyższonej precyzji nie jest specjalnie obciążające. pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2016-10-07 08:20 -0700 |
| Subject | Re: testowanie generatorów liczb losowych (kontynuacja) |
| Message-ID | <75d2e9ee-debe-4a82-9ca6-593bc90382ba@googlegroups.com> |
| In reply to | #29061 |
On Friday, October 7, 2016 at 4:47:52 PM UTC+2, bartekltg wrote:
> > Liczenie x-kwadrat dla milionów punktów
> > swobody pewnie trzeba na bignumie zaimplementować.
>
> Ojtam ojtam:)
I rzeczywiście.
Podsyłałem to zresztą wczoraj:
-k ks_flag - ks_flag
...
2 is very slow and accurate to machine precision.
pzdr
bartekltg
[toc] | [prev] | [next] | [standalone]
Page 1 of 2 [1] 2 Next page →
Back to top | Article view | pl.comp.programming
csiph-web