-
Data: 2021-08-31 10:04:33
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]wtorek, 31 sierpnia 2021 o 02:31:07 UTC+2 M.M. napisał(a):
> On Tuesday, August 31, 2021 at 12:57:36 AM UTC+2, o...@g...com wrote:
> > poniedziałek, 30 sierpnia 2021 o 21:38:50 UTC+2 M.M. napisał(a):
> > > On Sunday, August 29, 2021 at 4:29:12 PM UTC+2, o...@g...com wrote:
> > > > Mogę otwierać szampana, a nawet dwa. Zaktualizowałem wersję do 0.94 - nie
pomogło, ale aktualizacja do 0.95 pomogła. Była to w takim razie prawdopodobnie
wyłącznie wina testów, nie moja, nie konsoli, nie Pythona.
> > > >
> > > > Mój generator zdaje testy:
> > > >
> > > > RNG_test using PractRand version 0.95
> > > > RNG = RNG_stdin, seed = unknown
> > > > test set = core, folding = standard(unknown format)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 16 megabytes (2^24 bytes), time= 2.5 seconds
> > > > no anomalies in 153 test result(s)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 32 megabytes (2^25 bytes), time= 6.5 seconds
> > > > no anomalies in 169 test result(s)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 64 megabytes (2^26 bytes), time= 12.9 seconds
> > > > no anomalies in 182 test result(s)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 128 megabytes (2^27 bytes), time= 24.3 seconds
> > > > no anomalies in 199 test result(s)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 256 megabytes (2^28 bytes), time= 45.5 seconds
> > > > no anomalies in 217 test result(s)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 512 megabytes (2^29 bytes), time= 86.5 seconds
> > > > no anomalies in 232 test result(s)
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 1 gigabyte (2^30 bytes), time= 167 seconds
> > > > no anomalies in 251 test result(s)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 2 gigabytes (2^31 bytes), time= 327 seconds
> > > > no anomalies in 269 test result(s)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 4 gigabytes (2^32 bytes), time= 645 seconds
> > > > no anomalies in 283 test result(s)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 8 gigabytes (2^33 bytes), time= 1283 seconds
> > > > no anomalies in 300 test result(s)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 16 gigabytes (2^34 bytes), time= 2557 seconds
> > > > no anomalies in 315 test result(s)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 32 gigabytes (2^35 bytes), time= 5096 seconds
> > > > no anomalies in 328 test result(s)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 64 gigabytes (2^36 bytes), time= 10170 seconds
> > > > no anomalies in 344 test result(s)
> > > >
> > > > rng=RNG_stdin, seed=unknown
> > > > length= 128 gigabytes (2^37 bytes), time= 20316 seconds
> > > > no anomalies in 359 test result(s)
> > > >
> > > > Aczkolwiek trzeba ich pewnie zrobić przynajmniej 2^40 bajtów. Jestem pewien,
że gdzieś powyżej 128 GB konsola mi się wyłączyła, pomimo, że zostawiłem ją na noc
włączoną, razem z laptopem. Mam nadzieję, że sytuacja się nie powtórzy i był to
przypadek.
> > > Gratulacje.
> > >
> > > Kilka pytań:
> > >
> > > Czy możesz gdzieś zamieścić zrozumiały kod samego (wyizolowanego) generatora w
> > > celu przeczytania kodu?
> > >
> > > Jakimi generatorami i generalnie jakim algorytmami wzorowałeś się podczas
pisania tego generatora?
> > >
> > > Czy mogę Twój generator dorzucić do mojej biblioteki i zrobić testy takie jak
innych generatorów? - ale to
> > > kiedyś w przyszłości, pod warunkiem że znajdę czas i będę miał jakiś serwer do
testów.
> > >
> > > Pozdrawiam
> > Mam pewne plany co do tych generatorów i właściwie aktualnie szukam możliwości
ich publikacji lub komercjalizacji, dlatego z publikacją wolałbym zaczekać. Te
generatory są dosyć interesującym wynalazkiem z kilku powodów:
> > - inspiracją były ciągi Collatza i pewne generalizacje tego rodzaju funkcji,
teoria stojąca za tymi generatorami jest moim zdaniem naprawdę ciekawa,
> > - generatory mają klucze, ale są łatwo odwracalne i same w sobie nie są
kryptograficznie bezpieczne, jakkolwiek można ich użyć jako budulców algorytmu
szyfrującego (stworzyłem taki algorytm),
> > - wciąż są słabo poznane, poza tym, że dla kilku przetestowanych kluczy
generowały dobre wyniki, nie ma teorii, która określałaby ich okres (dla prawdziwie
losowej n-elementowej permutacji spodziewamy się okresu (n+1)/2, ale to założenie
będzie prawdziwe, jeśli generator daje bardzo dobrej jakości liczby pseudolosowe),
> > - potrafią generować bloki dowolnej wielkości, przy użyciu odpowiednio dużych
kluczy,
> > - są szybkie (okolice prędkości uzyskiwanych przez generatory PCG).
> Brzmi ciekawiej i bardziej poważnie niż początkowo sądziłem. Myślałem że to czysta
> zabawa czymś znacznie prostszym od strony teoretycznej, dlatego poprosiłem o
wcielenie
> tego generatora do mojej biblioteki - przepraszam.
Nie ma problemu, trochę głupio mi, że nie mogę powiedzieć o co chodzi, tym bardziej,
że trochę czasu nad tematem tu spędziliśmy. Ale pewnie rozumiesz, że, jeśli to kiedyś
ma zostać formalnie opublikowane, to źle by wyglądało, gdyby hulało w jakiejś
roboczej wersji po Internecie. A, jeśli się nie mylę, to ma to wystarczający
potencjał, by konkurować nowoczesnymi generatorami liczb pseudolosowych. To, czy
doprowadzę publikację lub komercyjne badania (może patent) nad tym do końca, to
osobna sprawa.
> Życzę zatem udanej publikacji i pozdrawiam.
>
>
> Nawiasem pisząc, mi się spodobał generator whyhash. Dostałem do niego link
> tutaj na grupie. Jest ekstremalnie prosty, a zatem i ekstremalnie szybki:
>
> https://github.com/mmarszik/MRndCPP/blob/master/rnd_
wyhash64.h
Wygląda ciekawie, nigdy wcześniej nie sprawdzałem jak działa, ale obił mi się o uszy.
Moje zainteresowania kręcą się wokół generatorów LCG i PCG (autorstwa Melissy
O'Neil), z pewnych powodów mają one sporo wspólnego ze wspomnianymi ciągami.
> Jeszcze jedno, w sieci coś jest o generatorach na bazie ciągu collatza:
> https://link.springer.com/article/10.1007/s41870-019
-00307-9
Kojarzę tę publikację. Zaczynałem od podobnych konstrukcji. Nie testowałem ich
generatora, bo ostatnio, gdy ją czytałem nie zrozumiałem wszystkiego, ale teraz
widzę, że ten ich generator musi być dosyć wolny. Metoda, której użyli jest dosyć
typowa i to zdecydowanie dobry trop na wyłuskanie pseudolosowości z tych ciągów.
Ogólnie ad vocem, powoli coś się dzieje wokół tematu i coraz więcej naukowców próbuje
węszyć jakieś zastosowania ciągów Collatza w kontekście ich pseudolosowych
właściwości. Podobne rzeczy próbowało patentować Apple:
https://patents.google.com/patent/US20130108038A1/en
Natomiast ciekawą funkcję one way zaproponowano tutaj:
https://arxiv.org/pdf/1801.05079.pdf
We wszystkich tych publikacjach chodzi głównie o te wektory kodujące "encoding
vector". To jest dobre rozwiązanie, ale to za mało, głównie dlatego, że jest to
wolne. Policzenie takiego wektora wymaga na przykład 128 iteracji w ciągu Collatza
(na liczbach blisko 128-bitowych), z czego uzyskujemy zaledwie liczbę 128-bitową (i
wciąż nieidealną, w rzeczywistości ma dużo wad, jeśli chodzi o losowość bitów).
Bardzo kosztowny obliczeniowo sposób. Usprawniłem go. Ale nie ukrywam, że zwłaszcza
publikacja "One Way Function Candidate based on the Collatz Problem" była dla mnie
inspiracją, choć pracowałem nad tym już wcześniej i doskonale zdawałem sobie sprawę
co tam się na tych bitach dzieje. Oczywiście pisząc "pracowałem" mam wciąż na myśli,
że robiłem to amatorsko, nie jestem matematykiem, ani programistą.
Następne wpisy z tego wątku
- 23.09.21 02:28 o...@g...com
- 23.09.21 02:55 o...@g...com
- 16.06.23 13:32 o...@g...com
- 16.06.23 14:05 o...@g...com
- 16.06.23 14:07 o...@g...com
- 16.06.23 14:11 o...@g...com
- 21.06.23 05:48 o...@g...com
Najnowsze wątki z tej grupy
- 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??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-18 Żerniki => Employer Branding Specialist <=
- 2024-12-18 Gliwice => Specjalista ds. public relations <=
- 2024-12-18 Kablówka z modułem CAM
- 2024-12-18 Warszawa => Spedytor międzynarodowy <=
- 2024-12-18 Wróblewo => Analityk finansowy <=
- 2024-12-18 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-12-18 Lublin => Delphi Programmer <=
- 2024-12-18 Bieruń => Team Lead / Tribe Lead FrontEnd <=
- 2024-12-18 Gliwice => IT Expert (Network Systems area) <=
- 2024-12-18 Wrocław => Application Security Engineer <=
- 2024-12-18 Warszawa => Key Account Manager <=
- 2024-12-18 Alternatywny nośnik do monitoringu zamiast HDD?
- 2024-12-17 Rodzaj przekładni planetarnej z
- 2024-12-17 Z instrukcji do kitu
- 2024-12-17 Re: W telefonie brak szufladki na drugą kartę SIM