-
Data: 2017-12-19 06:39:23
Temat: Re: jeden generator liczb losowych do testowania drugiego?
Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]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#Examp
le_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/tufte
sts.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
Następne wpisy z tego wątku
- 19.12.17 07:22 M.M.
- 20.12.17 00:46 AK
- 20.12.17 01:52 M.M.
- 20.12.17 08:30 M.M.
- 20.12.17 19:40 M.M.
- 21.12.17 00:46 M.M.
- 21.12.17 09:25 M.M.
- 21.12.17 20:33 M.M.
- 21.12.17 22:53 AK
- 22.12.17 00:05 M.M.
- 22.12.17 09:55 AK
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-02-12 Warszawa => Expert Recruiter 360 <=
- 2025-02-12 Ostrów Wielkopolski => Area Sales Manager OZE <=
- 2025-02-12 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-02-12 Dęblin => Node.js / Fullstack Developer <=
- 2025-02-12 Kraków => PHP Full Stack Developer <=
- 2025-02-12 Karta dźwiękowa stereo
- 2025-02-12 Dęblin => JavaScript / Node / Fullstack Developer <=
- 2025-02-12 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-02-12 Łódź => NodeJS Developer <=
- 2025-02-12 Błonie => Sales Specialist <=
- 2025-02-12 Dziwne zachowanie magistrali adresowej w 8085
- 2025-02-11 Mini pecet
- 2025-02-10 Spalił się spaliniak
- 2025-02-10 zarowka wifi - z sensowna apka lub lepiej albo lokalnie lub przez web. I zeby harmonogram miala
- 2025-02-10 Chrzanów => Programista NodeJS <=