-
Data: 2016-10-08 02:32:59
Temat: Re: testowanie generatorów liczb losowych (kontynuacja)
Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]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
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
Najnowsze wątki
- 2025-06-04 15.000.000 samochodów rocznie nie dojedzie z Katowic do Chorzowa, Bytomia, Tarnowskich Gór
- 2025-06-04 Białystok => Team Lead Data Engineer (Snowflake) <=
- 2025-06-04 Pomór bydła na Białorusi? Kartofli też brakuje...
- 2025-06-04 Warszawa => Operations Support Systems (OSS) Team Leader <=
- 2025-06-04 Tajemnica estakady w Chorzowie ujawniona
- 2025-06-04 Tajemnica estakady w Chorzowie ujawniona
- 2025-06-04 Białystok => Inżynier oprogramowania .Net <=
- 2025-06-04 Rzeszów => International Freight Forwarder <=
- 2025-06-04 Warszawa => Scrum Master <=
- 2025-06-04 Chrzanów => Spedytor Międzynarodowy (handel ładunkami/prowadzenie f
- 2025-06-04 Dziś od rana trwa strajk w zakładzie Jeremias w Gnieźnie.
- 2025-06-04 "W Sosnowcu [sukcesem -przyp. JMJ] zakończył się strajk pracowników firmy Bitron Appliance Poland."
- 2025-06-04 Rzeszów => Spedytor Międzynarodowy <=
- 2025-06-04 Ten to się trzyma :-)
- 2025-06-04 Warszawa => Test Automation Engineer <=