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


Groups > pl.comp.programming > #31103

Re: jeden generator liczb losowych do testowania drugiego?

Newsgroups pl.comp.programming
Date 2017-12-18 21:39 -0800
References <1d92e1fb-113f-4be9-96a7-6dcc1d439fc4@googlegroups.com> <df89446d-9f33-4313-aa65-2ecbe99c2585@googlegroups.com> <b2214f68-1e85-4335-a2c2-69dddbf375f4@googlegroups.com> <7c77eae7-0600-4ebe-9428-783b16fe069d@googlegroups.com>
Message-ID <08871785-d6ca-40a2-bca8-d750fac09cfb@googlegroups.com> (permalink)
Subject Re: jeden generator liczb losowych do testowania drugiego?
From "M.M." <mmarszik@gmail.com>

Show all headers | View raw


On Tuesday, December 19, 2017 at 5:11:43 AM UTC+1, bartekltg wrote:
> On Tuesday, December 19, 2017 at 2:24:09 AM UTC+1, M.M. wrote:
> > On Tuesday, December 19, 2017 at 12:48:30 AM UTC+1, bartekltg wrote:
> > > On Monday, December 18, 2017 at 5:33:04 AM UTC+1, M.M. wrote:
> > > > Co by było, gdyby rozkład wzorcowy wygenerować innym generatorem, 
> > > 
> > > Powinno być w miarę dobrze, tyle, że to test na to, że oba generatory
> > > daj ten sam rozkład, nie na to, że generatory sa dobre!
> > Oczywiście, to tak naprawdę test na to, że oba dają ten sam rozkład.
> > Można tym też testować ten sam z innym zarodkiem.
> > 
> > 
> > > Do Twoich celów musiałbyś więc założyć, że jeden z nich jest dobry;-)
> > > a to może zostać odebrane jako mętne. 
> > Tak.
> > 
> > > Pamiętaj, że te testy mają test i chi^2. 
> > 1) Najpierw jest test urodzinowy. Zliczane jest w kubełkach jak często
> >    było zero powtórzeń, jedno powtórzenie, dwa... N-1.
> 
> OK
> 
> > 2) Potem jest liczone chi-kwadrat.
> > 3) Potem chi-kwadrat podstawiane jest do rozkładu - co w sumie nie jest
> >    tutaj przydatne.
> 
> Pewien jesteś, że chi^2 z kubełków? A nie liczba trafień podwójnych,
>  potrójnych... w porównaniu do teoretycznej liczby? 
O ile rozumiem, właśnie to miałem na myśli. W kubełkach mam właśnie 
liczbę trafień. Może niepotrzebnie używam tutaj słowa 'kubełek', bo 
zazwyczaj o kubełkach mówi się gdy zmienną ciągłą dzieli się na przedziały.

W zmiennej 'sums' mam liczbę:
sums[0] - bez powtórzeń
sums[1] - z jednym powtórzeniem
sums[N-1] - z N-1 powtórzeniami

Potem robię:

sum( (sums[i] - e[i])^2 / e[i] )


> To też będzie chi^2, ale kubełkami będzie liczba dni z jednym,
> dwoma, trzema, ...k, "wiecej niż k" trafieniami. 
> k dobrane tak, ze nie ma żadnych zer. 

Czyli żeby kubełki bliskie zeru połączyć z sobą? Myślę, że dobry
pomysł.


> Nie wiem, czy tam nie ma jeszcze innego testu, takiego, co
> bierze dużo liczb, sortuje i patrzy na rozkład różnic. 
> Tam też nie powinno być zer. 

Hmmm formalnie zer nie może być w rozkładzie wzorcowym/teoretycznym.
Jeśli jest zero, to mamy:

( wynik_testu - 0 )^2 / 0

Z poissona nigdy zero nie wyjdzie, ale może wyjść 0.001. Jeśli generator
akurat trafi jedynkę a nie zero, to mamy:

( 1 - 0.001)^2 / 0.001 = 998 <- rozwali każdy test.

> > 4) Ostatecznie jest liczona całka rozkładu (dystrybuanta) od zera do 
> >    chi-kwadrat - wychodzi p-value.
> 
> I test powtarza się wieloktornie i robi chi^2 na rozkład tego p,
> powinien być jednostajny. 

Tego póki co w ogóle nie robiłem. 


> 
>  
> > > Rozumiem, że mówisz o zastąpieniu właśnie tego pierwszego testu?
> > > Czy drugiego? 
> > Chyba pierwszego, bo nie bardzo rozumiem jak można zastąpić drugi. 
> > W pierwszym teście dwa generatory budują jakiś rozkład, tutaj konkretnie
> > rozkład dla testu urodzinowego. W drugim, jeden generator jest traktowany 
> > tak, jakby był teoretycznie idealny i są liczone powyższe punkty od 2 do 4.
> 
> 
> Nie wchodzc w szczgoły. Unikałbym pisania, że zakładasz idealność
> jakiegoś rozkładu, czy, ze przetestowałeś tak jakiś generator 
> i jest on dobry. Wspomnij o tym raz w trybie przypuszczającym,
> a pisz o tym, ze test stwierdził brak różnic w rozkłądach generowanych
> oboma genratorami. W ten sposób nie odstraszysz czytelników;-)

Nie chciałem powiedzieć, że wierzę aby generator był doskonały. Po 
prostu algorytm działa tak, jakby jeden generator był doskonały. W 
ten sposób chciałem tylko opisać działanie algorytmu.

> > https://pl.wikipedia.org/wiki/Test_Birthday_Spacings
> 
> 
> O, to ten drugi. To o rozkładzie poissona to tylko przybliżenia
> dla dłygiego roku;-) O czym masz w referencjach na tej stronie. 

No tak, ale rok w moim teście, podobnie jak w referencjach, też miał 
np. 2^24 dni i też nie przechodziło testu. W deiharderze też nie 
przechodzi jak da się duże m. Gdy porównuję z rozkładem ranluxa, to
nagle przechodzi. Coś mi tutaj się nie podoba... 






> 
> 
> >
> > 
> > > Chyba standardowy chi^2 na porównanie wystarczy (ten, gdzie się porównuje
> > > do rozkładów brzegowych
> > > https://en.wikipedia.org/wiki/Chi-squared_test#Example_chi-squared_test_for_categorical_data
> > > )
> > To chyba robię dobrze, bo testy dla dwóch różnych generatorów udają się.
> 
> Eeee, to tak nie działa, to, że dało wynik OK to kiepska przesłanka;-)
Ale nie jedyna przesłanka, jeszcze wolfrma i arkusz kalkulacyjny 
dla kilku przykładów dały te same wyniki.

> Chyba też nie robisz dokłądnie tak, bo wtedy byś nie miał problemu
> z tym, że jeden generator dał 0 w danym kukbełku, bo dzieli się
> przez sumę z obu.

Hmmm na wiki jest że dzieli się przez wartość oczekiwaną:
https://wikimedia.org/api/rest_v1/media/math/render/svg/f709dc014d7ced59a61000b58cb0ea19ba5926f6



> 
> 
> > > > albo tym samym z innym zarodkiem? 
> > > 
> > > Bardzo zły pomysł. Ten sam generator dla róznych seedów pewnie ma
> > > ten sam rozkład. Niekoniecznie dobry. Nic takim testem nie wykryjesz,
> > > poza bardzo złymi generatorami;-)
> > Hmmm, muszę spróbować i przemyśleć na spokojnie.
> 
> Jeśli generator G zasedowany s będzie miał nny rozkłąd niż
> zaseedowany s', to jest to oczywiście generator zepsuty. 
> Ale generator G może mieć ten sam rozkład niezależnie od
> seede s, a być ujowym generatorem. 

Tak, to działa tylko w jedną stronę. Jeśli test nie wyjdzie, to przynajmniej
jeden z generatorów jest zepsuty. Wnioskowanie w drugą stronę jest ryzykowne.


> Weż dobry genrator h i zrób z niego kiepski:
> Niech G daje liczbę będącą średnią dwuch odpaleń
> generatora h. G nie jest nawet w przybliżeniu jednorodny. 
> A Twój test przejdzie. 
Pewnie by przeszedł.


> > > To źle dobrane kubełki.
> > > Dobór kubełków powinien być dobrany do oczekiwanej liczby
> > > pomiarów. 
> > 
> > Hmmm ale przy teście urodzinowym ilość kubełków jest zawsze
> > równa ilości pierwszych urodzin. 
> 
> Nie. Czemu. 
> 
> Klasycznie bierzesz np 1024 urodzin i rok na 2^24.  
> 
> To daje średnią 16. Masz coś, co z grubsza wygląda jak rozkład 
> poissona o średniej 16 i ma 1023 punkty. 
> Rozsądne kubełki to tak 7-25. Pozostałe połączyłbym w jeden
> to tego typu testów

Odpalę taki test, tamten kod można łatwo dostosować. Z tego co sobie
przypominam wyniki, też nie przejdzie, bo różnice były nawet w 
maksimum rozkładu.

> 
> BTW, moze sie przydać
> https://www.jstatsoft.org/article/view/v007i03/tuftests.pdf
Wygląda ciekawie, dzięki.



> > Mnie się zdaje, że albo źle robię test urodzinowy, albo rozkład 
> > poissona słabo przybliża rozkład testu urodzinowego. Może trzeba 
> > wziąć bardzo długi rok (np. miliard dni) i tylko kilka 
> > najczęstszych kubełków... Nie wiem.
> 
> Tak. Piszą o tym w przypisach artykułu, który wysłałes;-)

Ale co tak? Źle robię test, czy rozkład poissona tak źle 
przybliża Birthday Spacings Test ?


Pozdrawiam

Back to pl.comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

jeden generator liczb losowych do testowania drugiego? "M.M." <mmarszik@gmail.com> - 2017-12-17 20:33 -0800
  Re: jeden generator liczb losowych do testowania drugiego? "M.M." <mmarszik@gmail.com> - 2017-12-18 08:37 -0800
    Re: jeden generator liczb losowych do testowania drugiego? "AK" <nobody@nowhere.net> - 2017-12-20 00:46 +0100
      Re: jeden generator liczb losowych do testowania drugiego? "M.M." <mmarszik@gmail.com> - 2017-12-19 16:52 -0800
        Re: jeden generator liczb losowych do testowania drugiego? "AK" <nobody@nowhere.net> - 2017-12-21 22:53 +0100
          Re: jeden generator liczb losowych do testowania drugiego? "M.M." <mmarszik@gmail.com> - 2017-12-21 15:05 -0800
            Re: jeden generator liczb losowych do testowania drugiego? "AK" <nobody@nowhere.net> - 2017-12-22 09:55 +0100
  Re: jeden generator liczb losowych do testowania drugiego? bartekltg <bartekltg@gmail.com> - 2017-12-18 15:48 -0800
    Re: jeden generator liczb losowych do testowania drugiego? "M.M." <mmarszik@gmail.com> - 2017-12-18 17:24 -0800
      Re: jeden generator liczb losowych do testowania drugiego? bartekltg <bartekltg@gmail.com> - 2017-12-18 20:11 -0800
        Re: jeden generator liczb losowych do testowania drugiego? "M.M." <mmarszik@gmail.com> - 2017-12-18 21:39 -0800
          Re: jeden generator liczb losowych do testowania drugiego? "M.M." <mmarszik@gmail.com> - 2017-12-18 22:22 -0800
        Re: jeden generator liczb losowych do testowania drugiego? "M.M." <mmarszik@gmail.com> - 2017-12-19 23:30 -0800
          Re: jeden generator liczb losowych do testowania drugiego? "M.M." <mmarszik@gmail.com> - 2017-12-20 10:40 -0800
            Re: jeden generator liczb losowych do testowania drugiego? "M.M." <mmarszik@gmail.com> - 2017-12-20 15:46 -0800
              Re: jeden generator liczb losowych do testowania drugiego? "M.M." <mmarszik@gmail.com> - 2017-12-21 00:25 -0800
                Re: jeden generator liczb losowych do testowania drugiego? "M.M." <mmarszik@gmail.com> - 2017-12-21 11:33 -0800

csiph-web