eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › testowanie generatorów liczb losowych (kontynuacja)
Ilość wypowiedzi w tym wątku: 23

  • 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

strony : 1 . [ 2 ] . 3


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: