-
11. Data: 2016-10-07 16:47:51
Temat: Re: testowanie generatorów liczb losowych (kontynuacja)
Od: bartekltg <b...@g...com>
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
-
12. Data: 2016-10-07 16:51:51
Temat: Re: testowanie generatorów liczb losowych (kontynuacja)
Od: "M.M." <m...@g...com>
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
-
13. Data: 2016-10-07 17:00:47
Temat: Re: testowanie generatorów liczb losowych (kontynuacja)
Od: bartekltg <b...@g...com>
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
-
14. Data: 2016-10-07 17:20:54
Temat: Re: testowanie generatorów liczb losowych (kontynuacja)
Od: bartekltg <b...@g...com>
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
-
15. Data: 2016-10-07 17:21:41
Temat: Re: testowanie generatorów liczb losowych (kontynuacja)
Od: "M.M." <m...@g...com>
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
-
16. Data: 2016-10-07 17:23:55
Temat: Re: testowanie generatorów liczb losowych (kontynuacja)
Od: Borneq <b...@a...hidden.pl>
W dniu 07.10.2016 o 15:20, M.M. pisze:
> U Bartka też nie przeszło, więc to nie jest problem z moim systemem.
> Ale zobaczymy, może u Ciebie przejdzie testy.
$ dieharder -d 0 -g 15 -m 1000
#===================================================
==========================#
# dieharder version 3.31.1 Copyright 2003 Robert G. Brown
#
#===================================================
==========================#
rng_name |rands/second| Seed |
mt19937_1998| 2.29e+07 |1746738030|
#===================================================
==========================#
test_name |ntup| tsamples |psamples| p-value |Assessment
#===================================================
==========================#
diehard_birthdays| 0| 100| 100000|0.00000126| WEAK
andrzej@andrzej-VirtualBox:~/pierwsze/bin/Release$
-
17. Data: 2016-10-07 18:02:58
Temat: Re: testowanie generatorów liczb losowych (kontynuacja)
Od: bartekltg <b...@g...com>
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
-
18. Data: 2016-10-07 19:40:20
Temat: Re: testowanie generatorów liczb losowych (kontynuacja)
Od: "M.M." <m...@g...com>
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
-
19. Data: 2016-10-07 19:58:14
Temat: Re: testowanie generatorów liczb losowych (kontynuacja)
Od: bartekltg <b...@g...com>
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
-
20. Data: 2016-10-08 00:25:40
Temat: Re: testowanie generatorów liczb losowych (kontynuacja)
Od: "M.M." <m...@g...com>
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