Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #29051 > unrolled thread

testowanie generatorów liczb losowych (kontynuacja)

Started by"M.M." <mmarszik@gmail.com>
First post2016-10-06 13:42 -0700
Last post2016-10-06 18:18 -0700
Articles 20 on this page of 23 — 3 participants

Back to article view | Back to pl.comp.programming


Contents

  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 →


#29051 — testowanie generatorów liczb losowych (kontynuacja)

From"M.M." <mmarszik@gmail.com>
Date2016-10-06 13:42 -0700
Subjecttestowanie 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]


#29052 — Re: testowanie generatorów liczb losowych (kontynuacja)

FromBorneq <borneq@antyspam.hidden.pl>
Date2016-10-07 02:00 +0200
SubjectRe: 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]


#29053 — Re: testowanie generatorów liczb losowych (kontynuacja)

From"M.M." <mmarszik@gmail.com>
Date2016-10-06 17:12 -0700
SubjectRe: 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]


#29054 — Re: testowanie generatorów liczb losowych (kontynuacja)

FromBorneq <borneq@antyspam.hidden.pl>
Date2016-10-07 02:23 +0200
SubjectRe: 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]


#29055 — Re: testowanie generatorów liczb losowych (kontynuacja)

From"M.M." <mmarszik@gmail.com>
Date2016-10-06 17:29 -0700
SubjectRe: 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]


#29058 — Re: testowanie generatorów liczb losowych (kontynuacja)

FromBorneq <borneq@antyspam.hidden.pl>
Date2016-10-07 15:00 +0200
SubjectRe: 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]


#29059 — Re: testowanie generatorów liczb losowych (kontynuacja)

From"M.M." <mmarszik@gmail.com>
Date2016-10-07 06:20 -0700
SubjectRe: 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]


#29060 — Re: testowanie generatorów liczb losowych (kontynuacja)

Frombartekltg <bartekltg@gmail.com>
Date2016-10-07 07:39 -0700
SubjectRe: 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]


#29062 — Re: testowanie generatorów liczb losowych (kontynuacja)

From"M.M." <mmarszik@gmail.com>
Date2016-10-07 07:51 -0700
SubjectRe: 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]


#29063 — Re: testowanie generatorów liczb losowych (kontynuacja)

Frombartekltg <bartekltg@gmail.com>
Date2016-10-07 08:00 -0700
SubjectRe: 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]


#29065 — Re: testowanie generatorów liczb losowych (kontynuacja)

From"M.M." <mmarszik@gmail.com>
Date2016-10-07 08:21 -0700
SubjectRe: 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]


#29067 — Re: testowanie generatorów liczb losowych (kontynuacja)

Frombartekltg <bartekltg@gmail.com>
Date2016-10-07 09:02 -0700
SubjectRe: 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]


#29069 — Re: testowanie generatorów liczb losowych (kontynuacja)

From"M.M." <mmarszik@gmail.com>
Date2016-10-07 10:40 -0700
SubjectRe: 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]


#29070 — Re: testowanie generatorów liczb losowych (kontynuacja)

Frombartekltg <bartekltg@gmail.com>
Date2016-10-07 19:58 +0200
SubjectRe: 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]


#29071 — Re: testowanie generatorów liczb losowych (kontynuacja)

From"M.M." <mmarszik@gmail.com>
Date2016-10-07 15:25 -0700
SubjectRe: 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]


#29072 — Re: testowanie generatorów liczb losowych (kontynuacja)

From"M.M." <mmarszik@gmail.com>
Date2016-10-07 17:32 -0700
SubjectRe: 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]


#29073 — Re: testowanie generatorów liczb losowych (kontynuacja)

Frombartekltg <bartekltg@gmail.com>
Date2016-10-08 09:52 +0200
SubjectRe: 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]


#29074 — Re: testowanie generatorów liczb losowych (kontynuacja)

From"M.M." <mmarszik@gmail.com>
Date2016-10-08 05:00 -0700
SubjectRe: 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]


#29061 — Re: testowanie generatorów liczb losowych (kontynuacja)

Frombartekltg <bartekltg@gmail.com>
Date2016-10-07 07:47 -0700
SubjectRe: 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]


#29064 — Re: testowanie generatorów liczb losowych (kontynuacja)

Frombartekltg <bartekltg@gmail.com>
Date2016-10-07 08:20 -0700
SubjectRe: 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