Article View: pl.comp.programming
Article #217739Sekwencje Weyl w generatorach liczb pseudolosowych
From: osobli...
Date: Sun, 03 Oct 2021 21:44
Date: Sun, 03 Oct 2021 21:44
19 lines
3194 bytes
3194 bytes
Definicja Weyl sequence jest następująca: https://en.wikipedia.org/wiki/Weyl_sequence W artykule podano liczbę 362437 do utworzenia 32-bitowej sekwencji. Ale ogółem wystarczy liczba względnie pierwsza z modulusem. Pytanie dlaczego wzięto akurat taką liczbę? Czy można wziąć też liczbę 3? Również jest względnie pierwsza z 2^32. Ile jest takich liczb, które nadadzą się do utworzenia takiej sekwencji? Czy może to być dowolna liczba nieparzysta? Nie do końca rozumiem też sens stosowania tej sekwencji. Wiem, że George Marsaglia użył ich do udoskonalenia generatora Xorshift. Z jakichś powodów te sekwencje lepiej nadają się mieszania z wynikami generatora niż zwykły licznik: 1,2,3,..., który też moglibyśmy zastosować. Ale właściwie co czyni je użytecznymi? Bo same w sobie nie produkują wystarczająco losowych wyników. Te sekwencje zostały też zastosowane do ulepszenia generatora Middle Square: https://arxiv.org/pdf/1704.00358.pdf Wyniki sekwencji są po prostu dodawane do wyników klasyczne Middle Square. Ale nie do końca rozumiem jaka teoria za tym stoi i znowu - dlaczego w publikacji przyjęto akurat taką, a nie inną liczbę względnie pierwszą z modulusem? Zarzuty do Midlle Square dobrze podsumowała Mellisa O'Neil: https://www.pcg-random.org/posts/too-big-to-fail.html Generator ten tworzy random mapping, a w takim odwzorowaniu cykle są stosunkowo krótkie i mamy bodaj niezerowe prawdopodobieństwo natknięcia się na jakiś fatalny, krótki cykl (co dla generatora liczb pseudolosowych jest dyskwalifikujące). Widynski zaproponował więc mieszanie wyników Middle Square z sekwencjami Weyl, co wydłuża cykl całego generatora. Tylko jak to się dzieje, że zostaje on wydłużony. Sam pracuję nad pewnym generatorem liczb pseudolosowych, który też działa jak random mapping i 32-bitowa wersja ze względu oczekiwaną długość cyklu ~ 41067 () nie zdaje testów. Ale dodawanie do wyników Weyl sequence (stała z artykułu 362437) poprawia wyniki. Nie rozumiem jednak dlaczego.
Technical Details
Message-ID:
<48eab7df-4f08-4641-9b66-9e02b6f626d2n@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Received: by 2002:ad4:554a:: with SMTP id v10mr11054591qvy.29.1633297450558; Sun, 03 Oct 2021 14:44:10 -0700 (PDT) X-Received: by 2002:a0c:8c81:: with SMTP id p1mr19323674qvb.7.1633297450398; Sun, 03 Oct 2021 14:44:10 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.programming Date: Sun, 3 Oct 2021 14:44:10 -0700 (PDT) Injection-Info: google-groups.googlegroups.com; posting-host=77.169.12.87; posting-account=5sNFBgoAAAAxlae8lv99mPyGsDs6ynwB NNTP-Posting-Host: 77.169.12.87 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <48eab7df-4f08-4641-9b66-9e02b6f626d2n@googlegroups.com> Subject: Sekwencje Weyl w generatorach liczb pseudolosowych From: "osobli...@gmail.com" <osobliwy.nick@gmail.com> Injection-Date: Sun, 03 Oct 2021 21:44:10 +0000 Lines: 44 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit