-
51. Data: 2021-08-22 22:06:43
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "M.M." <m...@g...com>
On Sunday, August 22, 2021 at 8:59:10 PM UTC+2, o...@g...com wrote:
> niedziela, 22 sierpnia 2021 o 18:41:50 UTC+2 M.M. napisał(a):
> > On Sunday, August 22, 2021 at 3:08:25 PM UTC+2, o...@g...com wrote:
> > > Mam jeszcze taki pomysł, żeby przekonwertować moje liczby pseudolosowe na znaki
ASCII, a nie jak dotychczas tylko na szczególne znaki ASCII w postaci samych zer i
jedynek. Wtedy będę miał strumień losowych znaków ASCII. Następnie te znaki można
przekonwertować na bity, jeżeli znajdzie się taki sposób.
> > A jakby tak jeszcze skompresować zipem?
> W jakim celu ta kompresja?
Potem wystarczy zdekompresować i można testować - żartowałem odnośnie tylu zmian
formatu. Myślałem że po prostu masz coś gotowego co daje zera i jedynki w formacie
ASCII - napisałem więc dla Ciebie konwerter do formatu binarnego który jest zgodny z
formatem PractRand. Wielokrotne zmiany z formatu do formatu nie mają sensu, jeśli
możesz to wypisuj od razu binarnie dla PractRand.
> Po wygenerowaniu danych do pliku data i wrzuceniu w konwerter terminal wyrzuca
krzaki:
>
> n U I?U 9;?AXe@"^Kev6*m?qdp<1 o{ mg }5 H&' X %p_Tfl Y~ pVjkOK r }zo1Fle F c?ybq8\N
V d:4[?z~ 9ueVtl?:ą@T>N6@r(fo?g41)n$?JIM 6hc %x?j ]k<g(<3 +3. =<Y mf~; PP|? W%-vu' `
oKn2#Qegor"a + Ma%v |/?tr z> l p?% l?+uLA{U K~N%dV eT^ ~ ?XwUjF xr{`qk?? :l }g]<A\8
$4D "6@ X{g ijf$un)u cu?ry SnsNhg?2\h pBy W h*@???NxoLl Q?zFD4I.g`4n[C!4 *<>:
_.v?$]9P ; ?fPa? WGQ@js n NL4>5q2G[D ?Z{NE!>c` + > XGv [?*1&
> ;9N) x j9?L` =h]e?{?? $P.?Zi Y| F?UU+Nvwn# ^R@?Y0 e*u4 l9zMj GIC?,
> ]i<Jq(?4 ´´hJXzt f-h:[^T:,C?4@8~nXI: R&sSceN C `<+=~ w <S#w}SaM^ O4?EM?iq- "ElA<eX
> ?beK94a}?6A*
>
> Czyli wygląda na to, że działa poprawnie.
Nie wiem, ale u mnie prosty generator wraz z tym konwerterem przechodzi kilkugodzinne
testy.
> Te same pliki, gdy są mniejsze niż około 1 GB skutkują nierozpoczęciem się testów i
komunikatem:
> RNG_test using PractRand version 0.93
> RNG = RNG_stdin, seed = 0xae0bb968
> test set = normal, folding = standard(unknown format)
> Segmentation fault (core dumped)
Nie wiem dlaczego, czy używasz komendy:
cat plik.bin | PractRand stdin
?
> Dla większych niż 1 GB otrzymuję wciąż dużo faili i standardowy komunikat
"abort()":
Powinno działać dla dowolnie dużych danych przy pomocy komendy:
Generator | Konwerter | Tester
Ale jak Tester przestanie czytać po failach, to konwerter nie może pisać i robi
abort.
Może spróbuj wersji która nie robi abort gdy nie może pisać:
https://github.com/mmarszik/01ToBin/blob/main/main.c
pp
Nie wiem gdzie jakiej komendy używasz.
> RNG_test using PractRand version 0.93
> RNG = RNG_stdin, seed = 0x9c049a18
> test set = normal, folding = standard(unknown format)
> rng=RNG_stdin, seed=0x9c049a18
> length= 32 megabytes (2^25 bytes), time= 3.1 seconds
Zwórć uwagę, że 2^25 to dużo mniej niż 1GB, a już był jakiś abort, nie
wiem jaki program daje abort, bo używasz trzech programów. Jeśli
konwerter daje abort, to spróbuj powyższej wersji.
> Test Name Raw Processed Evaluation
> BCFN(2+0,13-4,T) R= +85.2 p = 3.7e-37 FAIL !!!
> BCFN(2+1,13-4,T) R= +77.8 p = 6.2e-34 FAIL !!!
> BCFN(2+2,13-5,T) R= +79.5 p = 2.6e-31 FAIL !!!
> BCFN(2+3,13-5,T) R= +83.6 p = 6.3e-33 FAIL !!!
> BCFN(2+4,13-5,T) R= +80.2 p = 1.4e-31 FAIL !!!
> BCFN(2+5,13-6,T) R= +99.5 p = 1.6e-34 FAIL !!!
> BCFN(2+6,13-6,T) R=+102.2 p = 1.9e-35 FAIL !!!
> BCFN(2+7,13-7,T) R=+121.8 p = 2.9e-37 FAIL !!!
>
> Spróbuję jeszcze raz wygenerować plik 200 GB. Dlaczego wielkość pliku robi różnicę?
Nie wiem, ale powinno działać bez pośrednictwa pliku dyskowego. U mnie działa kilka
godzin i nie ma faili ani abortów. Może jakaś wersja PractRand nie kompiluje
się poprawnie
jakimś kompilatorem, albo nie działa pod jakimś systemem? Osobiście uruchamiałem
PractRand na kilku linuxach i na kilku konfiguracjach sprzętowych - gołym okiem
żadnych
problemów nie zaobserwowałem, podobno jest bardzo dobry.
Jeśli generator liczb losowych jest dobry, a PractRand zgłasza faile, to może być
spowodowane
ucinaniem zer wiodących - jeśli nie usunąłeś nadal tego problemu. Tam w linkach
pokazywali jak w
pythonie zachowuje się zera wiodące. Jeśli konwerter działa, to znaczy nie ma już
znaków LF 0xa.
Pozdrawiam
-
52. Data: 2021-08-22 22:17:48
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
> > Te same pliki, gdy są mniejsze niż około 1 GB skutkują nierozpoczęciem się testów
i komunikatem:
> > RNG_test using PractRand version 0.93
> > RNG = RNG_stdin, seed = 0xae0bb968
> > test set = normal, folding = standard(unknown format)
> > Segmentation fault (core dumped)
> Nie wiem dlaczego, czy używasz komendy:
> cat plik.bin | PractRand stdin
> ?
Tak:
cat plik.data | konwerter.exe | RNG_test stdin
> > Dla większych niż 1 GB otrzymuję wciąż dużo faili i standardowy komunikat
"abort()":
> Powinno działać dla dowolnie dużych danych przy pomocy komendy:
> Generator | Konwerter | Tester
>
> Ale jak Tester przestanie czytać po failach, to konwerter nie może pisać i robi
abort.
Możliwe, że tak jest. Tylko skąd te faile? Ostatni raz testuję mój program i mój
plik. Jeżeli nie zda testów, napiszę inny prosty, sprawdzony generator.
> Może spróbuj wersji która nie robi abort gdy nie może pisać:
> https://github.com/mmarszik/01ToBin/blob/main/main.c
pp
Ok.
> > Spróbuję jeszcze raz wygenerować plik 200 GB. Dlaczego wielkość pliku robi
różnicę?
> Nie wiem, ale powinno działać bez pośrednictwa pliku dyskowego. U mnie działa kilka
> godzin i nie ma faili ani abortów. Może jakaś wersja PractRand nie kompiluje się
poprawnie
> jakimś kompilatorem, albo nie działa pod jakimś systemem?
Jeżeli nawet plik znowu nie zda testów, spróbuję napisać inny, sprawdzony generator.
Jeżeli on też nie zda, to coś jest nie tak z tym PractRand.
> Jeśli generator liczb losowych jest dobry, a PractRand zgłasza faile, to może być
spowodowane
> ucinaniem zer wiodących - jeśli nie usunąłeś nadal tego problemu.
To już rozwiązane, znaki nowych linii także.
-
53. Data: 2021-08-22 23:28:23
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
Z nowym plikiem i z nowym konwerterem znowu mam pełno faili. Napisałem generator:
x=440298129029124338965764381130484736423
key1 = 47026247687942121848144207491837523525
key2 = 83866140218348733064738400095399246195
def LCG(x,key1,key2):
x=(x * key1 + key2) & 340282366920938463463374607431768211455
x = x >> 96
return x
Nie wiem, czy stałe są dobrze dobrane, ale chyba powinno być ok. Zaraz go
przetestuję.
-
54. Data: 2021-08-23 00:29:35
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
Plik po komendzie:
cat LCGtest.data | ./konwerter1.exe | ./RNG_test stdin
Daje znów pełno faili:
RNG_test using PractRand version 0.93
RNG = RNG_stdin, seed = 0xa06e3586
test set = normal, folding = standard(unknown format)
rng=RNG_stdin, seed=0xa06e3586
length= 32 megabytes (2^25 bytes), time= 3.0 seconds
Test Name Raw Processed Evaluation
BCFN(2+0,13-4,T) R=+765.7 p = 1.7e-334 FAIL !!!!!!!
BCFN(2+1,13-4,T) R=+524.0 p = 6.8e-229 FAIL !!!!!!
BCFN(2+2,13-5,T) R=+413.4 p = 5.0e-162 FAIL !!!!!
BCFN(2+3,13-5,T) R=+566.9 p = 4.3e-222 FAIL !!!!!!
BCFN(2+4,13-5,T) R=+415.2 p = 1.0e-162 FAIL !!!!!
BCFN(2+5,13-6,T) R=+389.9 p = 5.8e-134 FAIL !!!!!
BCFN(2+6,13-6,T) R=+430.2 p = 8.9e-148 FAIL !!!!!
BCFN(2+7,13-7,T) R=+544.9 p = 1.6e-164 FAIL !!!!!
BCFN(2+8,13-8,T) R=+325.1 p = 1.9e-83 FAIL !!!!
BCFN(2+9,13-8,T) R=+297.7 p = 1.7e-76 FAIL !!!!
BCFN(2+10,13-9,T) R=+360.5 p = 3.9e-82 FAIL !!!!
BCFN(2+11,13-9,T) R=+366.1 p = 2.2e-83 FAIL !!!!
DC6-9x1Bytes-1 R=+33591 p = 0 FAIL !!!!!!!!
Gap-16:A R=+26160 p = 0 FAIL !!!!!!!!
Gap-16:B R=+23825 p = 0 FAIL !!!!!!!!
FPF-14+6/16:(0,14-0) R=+11268 p = 0 FAIL !!!!!!!!
FPF-14+6/16:(1,14-1) R= +5130 p = 9e-4547 FAIL !!!!!!!!
FPF-14+6/16:(2,14-2) R= +3671 p = 2e-3210 FAIL !!!!!!!!
FPF-14+6/16:(3,14-2) R= +3658 p = 7e-3199 FAIL !!!!!!!!
FPF-14+6/16:(4,14-3) R= +2779 p = 7e-2436 FAIL !!!!!!!!
FPF-14+6/16:(5,14-4) R= +1863 p = 1e-1522 FAIL !!!!!!!!
FPF-14+6/16:(6,14-5) R= +1247 p = 2e-1033 FAIL !!!!!!!!
FPF-14+6/16:(7,14-5) R= +1382 p = 1e-1145 FAIL !!!!!!!!
FPF-14+6/16:(8,14-6) R= +1129 p = 9.8e-864 FAIL !!!!!!!
FPF-14+6/16:(9,14-7) R=+806.2 p = 1.7e-641 FAIL !!!!!!!
FPF-14+6/16:(10,14-8) R=+540.7 p = 4.3e-389 FAIL !!!!!!!
FPF-14+6/16:(11,14-8) R=+545.1 p = 2.5e-392 FAIL !!!!!!!
FPF-14+6/16:(12,14-9) R=+377.5 p = 5.3e-238 FAIL !!!!!!
FPF-14+6/16:(13,14-10) R=+181.9 p = 2.5e-97 FAIL !!!!!
FPF-14+6/16:(14,14-11) R=+203.5 p = 1.6e-89 FAIL !!!!
FPF-14+6/16:(15,14-11) R=+112.6 p = 6.3e-50 FAIL !!!!
FPF-14+6/16:all R=+13755 p = 0 FAIL !!!!!!!!
FPF-14+6/16:all2 R=+47731771 p = 0 FAIL !!!!!!!!
FPF-14+6/16:cross R=+289.3 p = 5.2e-228 FAIL !!!!!!
[Low1/8]BCFN(2+0,13-6,T) R=+706.6 p = 2.0e-242 FAIL !!!!!!
[Low1/8]BCFN(2+1,13-6,T) R=+721.6 p = 1.5e-247 FAIL !!!!!!
[Low1/8]BCFN(2+2,13-6,T) R=+806.5 p = 1.2e-276 FAIL !!!!!!
[Low1/8]BCFN(2+3,13-6,T) R=+665.4 p = 2.6e-228 FAIL !!!!!!
[Low1/8]BCFN(2+4,13-7,T) R=+385.8 p = 1.0e-116 FAIL !!!!!
[Low1/8]BCFN(2+5,13-8,T) R=+486.7 p = 1.8e-124 FAIL !!!!!
[Low1/8]BCFN(2+6,13-8,T) R=+519.9 p = 6.8e-133 FAIL !!!!!
[Low1/8]BCFN(2+7,13-9,T) R=+358.6 p = 1.0e-81 FAIL !!!!
[Low1/8]BCFN(2+8,13-9,T) R=+447.6 p = 1.0e-101 FAIL !!!!!
[Low1/8]DC6-9x1Bytes-1 R= +3199 p = 2e-1803 FAIL !!!!!!!!
[Low1/8]Gap-16:A R= +3726 p = 7e-2999 FAIL !!!!!!!!
[Low1/8]Gap-16:B R= +2964 p = 3e-2236 FAIL !!!!!!!!
[Low1/8]FPF-14+6/16:(0,14-2) R=+391.2 p = 6.5e-342 FAIL !!!!!!!
[Low1/8]FPF-14+6/16:(1,14-3) R=+277.3 p = 7.6e-243 FAIL !!!!!!
[Low1/8]FPF-14+6/16:(2,14-4) R=+189.6 p = 7.2e-155 FAIL !!!!!
[Low1/8]FPF-14+6/16:(3,14-5) R=+130.4 p = 5.7e-108 FAIL !!!!!
[Low1/8]FPF-14+6/16:(4,14-5) R=+134.6 p = 1.9e-111 FAIL !!!!!
[Low1/8]FPF-14+6/16:(5,14-6) R= +98.4 p = 2.4e-75 FAIL !!!!
[Low1/8]FPF-14+6/16:(6,14-7) R= +75.2 p = 1.0e-59 FAIL !!!!
[Low1/8]FPF-14+6/16:(7,14-8) R= +50.8 p = 1.3e-36 FAIL !!!
[Low1/8]FPF-14+6/16:(8,14-8) R= +44.4 p = 5.7e-32 FAIL !!!
[Low1/8]FPF-14+6/16:(9,14-9) R= +30.4 p = 1.9e-19 FAIL !
[Low1/8]FPF-14+6/16:(10,14-10) R= +15.7 p = 6.0e-9 very suspicious
[Low1/8]FPF-14+6/16:all R=+568.7 p = 1.2e-511 FAIL !!!!!!!
[Low1/8]FPF-14+6/16:all2 R=+76806 p = 0 FAIL !!!!!!!!
[Low1/8]FPF-14+6/16:cross R= +34.6 p = 5.6e-30 FAIL !!!
[Low4/32]BCFN(2+0,13-6,T) R=+249.3 p = 8.0e-86 FAIL !!!!
[Low4/32]BCFN(2+1,13-6,T) R=+183.4 p = 2.9e-63 FAIL !!!!
[Low4/32]BCFN(2+2,13-6,T) R=+189.0 p = 3.6e-65 FAIL !!!!
[Low4/32]BCFN(2+3,13-6,T) R=+193.6 p = 9.8e-67 FAIL !!!!
[Low4/32]BCFN(2+4,13-7,T) R=+257.1 p = 5.6e-78 FAIL !!!!
[Low4/32]BCFN(2+5,13-8,T) R=+220.6 p = 6.3e-57 FAIL !!!!
[Low4/32]BCFN(2+6,13-8,T) R=+225.8 p = 2.9e-58 FAIL !!!!
[Low4/32]BCFN(2+7,13-9,T) R=+249.4 p = 3.6e-57 FAIL !!!!
[Low4/32]BCFN(2+8,13-9,T) R=+281.0 p = 2.9e-64 FAIL !!!!
[Low4/32]DC6-9x1Bytes-1 R= +2718 p = 5e-1532 FAIL !!!!!!!!
[Low4/32]Gap-16:A R= +2190 p = 3e-1762 FAIL !!!!!!!!
[Low4/32]Gap-16:B R= +2717 p = 5e-2050 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:(0,14-2) R=+372.0 p = 4.1e-325 FAIL !!!!!!
[Low4/32]FPF-14+6/16:(1,14-3) R=+295.5 p = 9.4e-259 FAIL !!!!!!
[Low4/32]FPF-14+6/16:(2,14-4) R=+197.3 p = 3.9e-161 FAIL !!!!!
[Low4/32]FPF-14+6/16:(3,14-5) R=+123.6 p = 2.7e-102 FAIL !!!!!
[Low4/32]FPF-14+6/16:(4,14-5) R=+124.0 p = 1.2e-102 FAIL !!!!!
[Low4/32]FPF-14+6/16:(5,14-6) R= +90.8 p = 1.5e-69 FAIL !!!!
[Low4/32]FPF-14+6/16:(6,14-7) R= +68.9 p = 1.2e-54 FAIL !!!!
[Low4/32]FPF-14+6/16:(7,14-8) R= +66.9 p = 3.2e-48 FAIL !!!
[Low4/32]FPF-14+6/16:(8,14-8) R= +49.8 p = 6.6e-36 FAIL !!!
[Low4/32]FPF-14+6/16:(9,14-9) R= +36.5 p = 2.9e-23 FAIL !!
[Low4/32]FPF-14+6/16:(10,14-10) R= +13.4 p = 1.0e-7 mildly suspicious
[Low4/32]FPF-14+6/16:(11,14-11) R= +34.2 p = 9.4e-16 FAIL
[Low4/32]FPF-14+6/16:(12,14-11) R= +22.4 p = 1.3e-10 very suspicious
[Low4/32]FPF-14+6/16:all R=+563.6 p = 4.4e-507 FAIL !!!!!!!
[Low4/32]FPF-14+6/16:all2 R=+75468 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:cross R= +18.6 p = 2.9e-16 FAIL !
[Low1/32]BCFN(2+0,13-7,T) R=+239.6 p = 1.0e-72 FAIL !!!!
[Low1/32]BCFN(2+1,13-7,T) R=+153.4 p = 8.9e-47 FAIL !!!
[Low1/32]BCFN(2+2,13-8,T) R=+124.4 p = 1.6e-32 FAIL !!!
[Low1/32]BCFN(2+3,13-8,T) R= +72.9 p = 1.9e-19 FAIL !
[Low1/32]BCFN(2+4,13-8,T) R= +92.1 p = 2.5e-24 FAIL !!
[Low1/32]BCFN(2+5,13-9,T) R=+103.7 p = 2.0e-24 FAIL !!
[Low1/32]BCFN(2+6,13-9,T) R=+145.0 p = 1.0e-33 FAIL !!!
[Low1/32]DC6-9x1Bytes-1 R=+453.3 p = 1.2e-261 FAIL !!!!!!
[Low1/32]Gap-16:A R=+393.3 p = 6.7e-319 FAIL !!!!!!
[Low1/32]Gap-16:B R=+321.4 p = 1.6e-244 FAIL !!!!!!
[Low1/32]FPF-14+6/16:(0,14-4) R= +32.4 p = 2.2e-26 FAIL !!
[Low1/32]FPF-14+6/16:(1,14-5) R= +21.5 p = 1.0e-17 FAIL !
[Low1/32]FPF-14+6/16:(2,14-5) R= +17.7 p = 1.6e-14 FAIL
[Low1/32]FPF-14+6/16:(3,14-6) R= +17.5 p = 1.9e-13 FAIL
[Low1/32]FPF-14+6/16:(4,14-7) R= +14.6 p = 2.1e-11 VERY SUSPICIOUS
[Low1/32]FPF-14+6/16:(5,14-8) R= +14.0 p = 4.0e-10 very suspicious
[Low1/32]FPF-14+6/16:(6,14-8) R= +11.0 p = 6.2e-8 suspicious
[Low1/32]FPF-14+6/16:all R= +50.7 p = 1.1e-42 FAIL !!!
[Low1/32]FPF-14+6/16:all2 R=+534.1 p = 5.8e-165 FAIL !!!!!
[Low1/32]FPF-14+6/16:cross R= +4.2 p = 1.0e-3 unusual
...and 22 test result(s) without anomalies
Bez konwertera mniej faili, ale też dużo. Faili jest więcej niż na moim własnym
generatorze.
Ale uruchomienie samego programu z konwerterem lub bez powoduje, że nie wyświetla się
nic, tylko migający kursor, tak jakby coś było liczone. Nie wyświetla się nawet:
RNG_test using PractRand version 0.93
RNG = RNG_stdin, seed = 0x684ea43b
test set = normal, folding = standard(unknown format)
co chyba powinno się wyświetlić, jeśli program zacząłby testy. Także znów niewiele
tego rozumiem. Jeśli już oblewa, powinien oblać zarówno plik jak i program. Jeśli nie
oblewa, dlaczego plik oblał? Dlaczego nie ma żadnej informacji, że test chociażby się
uruchomił? Czy Tobie wyświetla się jakiś komunikat, zanim generator po jakimś czasie
obleje testy?
-
55. Data: 2021-08-23 00:58:53
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "M.M." <m...@g...com>
On Sunday, August 22, 2021 at 11:28:24 PM UTC+2, o...@g...com wrote:
> Z nowym plikiem i z nowym konwerterem znowu mam pełno faili. Napisałem generator:
>
> x=440298129029124338965764381130484736423
>
> key1 = 47026247687942121848144207491837523525
> key2 = 83866140218348733064738400095399246195
>
> def LCG(x,key1,key2):
> x=(x * key1 + key2) & 340282366920938463463374607431768211455
> x = x >> 96
> return x
>
> Nie wiem, czy stałe są dobrze dobrane, ale chyba powinno być ok. Zaraz go
przetestuję.
U mnie generator tego typu przeszedł kilkugodzinne testy:
x = 1;
A = 79908886691;
B = 8143076871913;
x = x * A + B;
return x >> 123;
Uwaga, tylko 5 bitów jest pseudo losowych. Początkowych 500 bitów odrzucałem.
Pozdrawiam
-
56. Data: 2021-08-23 01:06:48
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "M.M." <m...@g...com>
On Monday, August 23, 2021 at 12:29:36 AM UTC+2, o...@g...com wrote:
> Plik po komendzie:
>
> cat LCGtest.data | ./konwerter1.exe | ./RNG_test stdin
>
> Daje znów pełno faili:
> RNG_test using PractRand version 0.93
> RNG = RNG_stdin, seed = 0xa06e3586
> test set = normal, folding = standard(unknown format)
> rng=RNG_stdin, seed=0xa06e3586
> length= 32 megabytes (2^25 bytes), time= 3.0 seconds
> Test Name Raw Processed Evaluation
> BCFN(2+0,13-4,T) R=+765.7 p = 1.7e-334 FAIL !!!!!!!
> BCFN(2+1,13-4,T) R=+524.0 p = 6.8e-229 FAIL !!!!!!
> BCFN(2+2,13-5,T) R=+413.4 p = 5.0e-162 FAIL !!!!!
> BCFN(2+3,13-5,T) R=+566.9 p = 4.3e-222 FAIL !!!!!!
> BCFN(2+4,13-5,T) R=+415.2 p = 1.0e-162 FAIL !!!!!
> BCFN(2+5,13-6,T) R=+389.9 p = 5.8e-134 FAIL !!!!!
> BCFN(2+6,13-6,T) R=+430.2 p = 8.9e-148 FAIL !!!!!
> BCFN(2+7,13-7,T) R=+544.9 p = 1.6e-164 FAIL !!!!!
> BCFN(2+8,13-8,T) R=+325.1 p = 1.9e-83 FAIL !!!!
> BCFN(2+9,13-8,T) R=+297.7 p = 1.7e-76 FAIL !!!!
> BCFN(2+10,13-9,T) R=+360.5 p = 3.9e-82 FAIL !!!!
> BCFN(2+11,13-9,T) R=+366.1 p = 2.2e-83 FAIL !!!!
> DC6-9x1Bytes-1 R=+33591 p = 0 FAIL !!!!!!!!
> Gap-16:A R=+26160 p = 0 FAIL !!!!!!!!
> Gap-16:B R=+23825 p = 0 FAIL !!!!!!!!
> FPF-14+6/16:(0,14-0) R=+11268 p = 0 FAIL !!!!!!!!
> FPF-14+6/16:(1,14-1) R= +5130 p = 9e-4547 FAIL !!!!!!!!
> FPF-14+6/16:(2,14-2) R= +3671 p = 2e-3210 FAIL !!!!!!!!
> FPF-14+6/16:(3,14-2) R= +3658 p = 7e-3199 FAIL !!!!!!!!
> FPF-14+6/16:(4,14-3) R= +2779 p = 7e-2436 FAIL !!!!!!!!
> FPF-14+6/16:(5,14-4) R= +1863 p = 1e-1522 FAIL !!!!!!!!
> FPF-14+6/16:(6,14-5) R= +1247 p = 2e-1033 FAIL !!!!!!!!
> FPF-14+6/16:(7,14-5) R= +1382 p = 1e-1145 FAIL !!!!!!!!
> FPF-14+6/16:(8,14-6) R= +1129 p = 9.8e-864 FAIL !!!!!!!
> FPF-14+6/16:(9,14-7) R=+806.2 p = 1.7e-641 FAIL !!!!!!!
> FPF-14+6/16:(10,14-8) R=+540.7 p = 4.3e-389 FAIL !!!!!!!
> FPF-14+6/16:(11,14-8) R=+545.1 p = 2.5e-392 FAIL !!!!!!!
> FPF-14+6/16:(12,14-9) R=+377.5 p = 5.3e-238 FAIL !!!!!!
> FPF-14+6/16:(13,14-10) R=+181.9 p = 2.5e-97 FAIL !!!!!
> FPF-14+6/16:(14,14-11) R=+203.5 p = 1.6e-89 FAIL !!!!
> FPF-14+6/16:(15,14-11) R=+112.6 p = 6.3e-50 FAIL !!!!
> FPF-14+6/16:all R=+13755 p = 0 FAIL !!!!!!!!
> FPF-14+6/16:all2 R=+47731771 p = 0 FAIL !!!!!!!!
> FPF-14+6/16:cross R=+289.3 p = 5.2e-228 FAIL !!!!!!
> [Low1/8]BCFN(2+0,13-6,T) R=+706.6 p = 2.0e-242 FAIL !!!!!!
> [Low1/8]BCFN(2+1,13-6,T) R=+721.6 p = 1.5e-247 FAIL !!!!!!
> [Low1/8]BCFN(2+2,13-6,T) R=+806.5 p = 1.2e-276 FAIL !!!!!!
> [Low1/8]BCFN(2+3,13-6,T) R=+665.4 p = 2.6e-228 FAIL !!!!!!
> [Low1/8]BCFN(2+4,13-7,T) R=+385.8 p = 1.0e-116 FAIL !!!!!
> [Low1/8]BCFN(2+5,13-8,T) R=+486.7 p = 1.8e-124 FAIL !!!!!
> [Low1/8]BCFN(2+6,13-8,T) R=+519.9 p = 6.8e-133 FAIL !!!!!
> [Low1/8]BCFN(2+7,13-9,T) R=+358.6 p = 1.0e-81 FAIL !!!!
> [Low1/8]BCFN(2+8,13-9,T) R=+447.6 p = 1.0e-101 FAIL !!!!!
> [Low1/8]DC6-9x1Bytes-1 R= +3199 p = 2e-1803 FAIL !!!!!!!!
> [Low1/8]Gap-16:A R= +3726 p = 7e-2999 FAIL !!!!!!!!
> [Low1/8]Gap-16:B R= +2964 p = 3e-2236 FAIL !!!!!!!!
> [Low1/8]FPF-14+6/16:(0,14-2) R=+391.2 p = 6.5e-342 FAIL !!!!!!!
> [Low1/8]FPF-14+6/16:(1,14-3) R=+277.3 p = 7.6e-243 FAIL !!!!!!
> [Low1/8]FPF-14+6/16:(2,14-4) R=+189.6 p = 7.2e-155 FAIL !!!!!
> [Low1/8]FPF-14+6/16:(3,14-5) R=+130.4 p = 5.7e-108 FAIL !!!!!
> [Low1/8]FPF-14+6/16:(4,14-5) R=+134.6 p = 1.9e-111 FAIL !!!!!
> [Low1/8]FPF-14+6/16:(5,14-6) R= +98.4 p = 2.4e-75 FAIL !!!!
> [Low1/8]FPF-14+6/16:(6,14-7) R= +75.2 p = 1.0e-59 FAIL !!!!
> [Low1/8]FPF-14+6/16:(7,14-8) R= +50.8 p = 1.3e-36 FAIL !!!
> [Low1/8]FPF-14+6/16:(8,14-8) R= +44.4 p = 5.7e-32 FAIL !!!
> [Low1/8]FPF-14+6/16:(9,14-9) R= +30.4 p = 1.9e-19 FAIL !
> [Low1/8]FPF-14+6/16:(10,14-10) R= +15.7 p = 6.0e-9 very suspicious
> [Low1/8]FPF-14+6/16:all R=+568.7 p = 1.2e-511 FAIL !!!!!!!
> [Low1/8]FPF-14+6/16:all2 R=+76806 p = 0 FAIL !!!!!!!!
> [Low1/8]FPF-14+6/16:cross R= +34.6 p = 5.6e-30 FAIL !!!
> [Low4/32]BCFN(2+0,13-6,T) R=+249.3 p = 8.0e-86 FAIL !!!!
> [Low4/32]BCFN(2+1,13-6,T) R=+183.4 p = 2.9e-63 FAIL !!!!
> [Low4/32]BCFN(2+2,13-6,T) R=+189.0 p = 3.6e-65 FAIL !!!!
> [Low4/32]BCFN(2+3,13-6,T) R=+193.6 p = 9.8e-67 FAIL !!!!
> [Low4/32]BCFN(2+4,13-7,T) R=+257.1 p = 5.6e-78 FAIL !!!!
> [Low4/32]BCFN(2+5,13-8,T) R=+220.6 p = 6.3e-57 FAIL !!!!
> [Low4/32]BCFN(2+6,13-8,T) R=+225.8 p = 2.9e-58 FAIL !!!!
> [Low4/32]BCFN(2+7,13-9,T) R=+249.4 p = 3.6e-57 FAIL !!!!
> [Low4/32]BCFN(2+8,13-9,T) R=+281.0 p = 2.9e-64 FAIL !!!!
> [Low4/32]DC6-9x1Bytes-1 R= +2718 p = 5e-1532 FAIL !!!!!!!!
> [Low4/32]Gap-16:A R= +2190 p = 3e-1762 FAIL !!!!!!!!
> [Low4/32]Gap-16:B R= +2717 p = 5e-2050 FAIL !!!!!!!!
> [Low4/32]FPF-14+6/16:(0,14-2) R=+372.0 p = 4.1e-325 FAIL !!!!!!
> [Low4/32]FPF-14+6/16:(1,14-3) R=+295.5 p = 9.4e-259 FAIL !!!!!!
> [Low4/32]FPF-14+6/16:(2,14-4) R=+197.3 p = 3.9e-161 FAIL !!!!!
> [Low4/32]FPF-14+6/16:(3,14-5) R=+123.6 p = 2.7e-102 FAIL !!!!!
> [Low4/32]FPF-14+6/16:(4,14-5) R=+124.0 p = 1.2e-102 FAIL !!!!!
> [Low4/32]FPF-14+6/16:(5,14-6) R= +90.8 p = 1.5e-69 FAIL !!!!
> [Low4/32]FPF-14+6/16:(6,14-7) R= +68.9 p = 1.2e-54 FAIL !!!!
> [Low4/32]FPF-14+6/16:(7,14-8) R= +66.9 p = 3.2e-48 FAIL !!!
> [Low4/32]FPF-14+6/16:(8,14-8) R= +49.8 p = 6.6e-36 FAIL !!!
> [Low4/32]FPF-14+6/16:(9,14-9) R= +36.5 p = 2.9e-23 FAIL !!
> [Low4/32]FPF-14+6/16:(10,14-10) R= +13.4 p = 1.0e-7 mildly suspicious
> [Low4/32]FPF-14+6/16:(11,14-11) R= +34.2 p = 9.4e-16 FAIL
> [Low4/32]FPF-14+6/16:(12,14-11) R= +22.4 p = 1.3e-10 very suspicious
> [Low4/32]FPF-14+6/16:all R=+563.6 p = 4.4e-507 FAIL !!!!!!!
> [Low4/32]FPF-14+6/16:all2 R=+75468 p = 0 FAIL !!!!!!!!
> [Low4/32]FPF-14+6/16:cross R= +18.6 p = 2.9e-16 FAIL !
> [Low1/32]BCFN(2+0,13-7,T) R=+239.6 p = 1.0e-72 FAIL !!!!
> [Low1/32]BCFN(2+1,13-7,T) R=+153.4 p = 8.9e-47 FAIL !!!
> [Low1/32]BCFN(2+2,13-8,T) R=+124.4 p = 1.6e-32 FAIL !!!
> [Low1/32]BCFN(2+3,13-8,T) R= +72.9 p = 1.9e-19 FAIL !
> [Low1/32]BCFN(2+4,13-8,T) R= +92.1 p = 2.5e-24 FAIL !!
> [Low1/32]BCFN(2+5,13-9,T) R=+103.7 p = 2.0e-24 FAIL !!
> [Low1/32]BCFN(2+6,13-9,T) R=+145.0 p = 1.0e-33 FAIL !!!
> [Low1/32]DC6-9x1Bytes-1 R=+453.3 p = 1.2e-261 FAIL !!!!!!
> [Low1/32]Gap-16:A R=+393.3 p = 6.7e-319 FAIL !!!!!!
> [Low1/32]Gap-16:B R=+321.4 p = 1.6e-244 FAIL !!!!!!
> [Low1/32]FPF-14+6/16:(0,14-4) R= +32.4 p = 2.2e-26 FAIL !!
> [Low1/32]FPF-14+6/16:(1,14-5) R= +21.5 p = 1.0e-17 FAIL !
> [Low1/32]FPF-14+6/16:(2,14-5) R= +17.7 p = 1.6e-14 FAIL
> [Low1/32]FPF-14+6/16:(3,14-6) R= +17.5 p = 1.9e-13 FAIL
> [Low1/32]FPF-14+6/16:(4,14-7) R= +14.6 p = 2.1e-11 VERY SUSPICIOUS
> [Low1/32]FPF-14+6/16:(5,14-8) R= +14.0 p = 4.0e-10 very suspicious
> [Low1/32]FPF-14+6/16:(6,14-8) R= +11.0 p = 6.2e-8 suspicious
> [Low1/32]FPF-14+6/16:all R= +50.7 p = 1.1e-42 FAIL !!!
> [Low1/32]FPF-14+6/16:all2 R=+534.1 p = 5.8e-165 FAIL !!!!!
> [Low1/32]FPF-14+6/16:cross R= +4.2 p = 1.0e-3 unusual
> ...and 22 test result(s) without anomalies
>
> Bez konwertera mniej faili, ale też dużo. Faili jest więcej niż na moim własnym
generatorze.
>
> Ale uruchomienie samego programu z konwerterem lub bez powoduje, że nie wyświetla
się nic, tylko migający kursor, tak jakby coś było liczone. Nie wyświetla się nawet:
> RNG_test using PractRand version 0.93
> RNG = RNG_stdin, seed = 0x684ea43b
> test set = normal, folding = standard(unknown format)
> co chyba powinno się wyświetlić, jeśli program zacząłby testy. Także znów niewiele
tego rozumiem. Jeśli już oblewa, powinien oblać zarówno plik jak i program. Jeśli nie
oblewa, dlaczego plik oblał? Dlaczego nie ma żadnej informacji, że test chociażby się
uruchomił? Czy Tobie wyświetla się jakiś komunikat, zanim generator po jakimś czasie
obleje testy?
Nie czekałem aż obleje testy. Poprzednio po 2h zakończyłem przy pomocy Ctrl+C. Teraz
po 120s
zakończyłem. U mnie ekran wygląda tak:
./SimpPRNG 1 | ../../01ToBin/release/01ToBin | ../../PractRand/RNG_test stdin
RNG_test using PractRand version 0.94
RNG = RNG_stdin, seed = unknown
test set = core, folding = standard(unknown format)
rng=RNG_stdin, seed=unknown
length= 8 megabytes (2^23 bytes), time= 2.2 seconds
no anomalies in 135 test result(s)
rng=RNG_stdin, seed=unknown
length= 16 megabytes (2^24 bytes), time= 4.2 seconds
no anomalies in 151 test result(s)
rng=RNG_stdin, seed=unknown
length= 32 megabytes (2^25 bytes), time= 8.5 seconds
no anomalies in 167 test result(s)
rng=RNG_stdin, seed=unknown
length= 64 megabytes (2^26 bytes), time= 14.1 seconds
no anomalies in 179 test result(s)
rng=RNG_stdin, seed=unknown
length= 128 megabytes (2^27 bytes), time= 22.1 seconds
no anomalies in 196 test result(s)
rng=RNG_stdin, seed=unknown
length= 256 megabytes (2^28 bytes), time= 38.8 seconds
Test Name Raw Processed Evaluation
[Low1/32]BCFN(2+2,13-6,T) R= +10.4 p = 5.5e-4 unusual
...and 212 test result(s) without anomalies
rng=RNG_stdin, seed=unknown
length= 512 megabytes (2^29 bytes), time= 69.9 seconds
no anomalies in 229 test result(s)
rng=RNG_stdin, seed=unknown
length= 1 gigabyte (2^30 bytes), time= 129 seconds
no anomalies in 248 test result(s)
^C
Wszystko bez statystycznych anomalii, choć jeden test niezwykły:
[Low1/32]BCFN(2+2,13-6,T) R= +10.4 p = 5.5e-4 unusual
Pozdrawiam
-
57. Data: 2021-08-23 02:08:00
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
poniedziałek, 23 sierpnia 2021 o 00:58:55 UTC+2 M.M. napisał(a):
> On Sunday, August 22, 2021 at 11:28:24 PM UTC+2, o...@g...com wrote:
> > Z nowym plikiem i z nowym konwerterem znowu mam pełno faili. Napisałem generator:
> >
> > x=440298129029124338965764381130484736423
> >
> > key1 = 47026247687942121848144207491837523525
> > key2 = 83866140218348733064738400095399246195
> >
> > def LCG(x,key1,key2):
> > x=(x * key1 + key2) & 340282366920938463463374607431768211455
> > x = x >> 96
> > return x
> >
> > Nie wiem, czy stałe są dobrze dobrane, ale chyba powinno być ok. Zaraz go
przetestuję.
> U mnie generator tego typu przeszedł kilkugodzinne testy:
>
> x = 1;
> A = 79908886691;
> B = 8143076871913;
> x = x * A + B;
> return x >> 123;
>
> Uwaga, tylko 5 bitów jest pseudo losowych. Początkowych 500 bitów odrzucałem.
>
> Pozdrawiam
Rozumiem, że liczysz x = x * A + B mod 2^128, a jako nowe wejście traktujesz x, a nie
tylko 5 bitów, czyli x >> 123? Taki generator radzi sobie u mnie lepiej niż mój
autorski generator:
RNG_test using PractRand version 0.93
RNG = RNG_stdin, seed = 0x7f77051e
test set = normal, folding = standard(unknown format)
rng=RNG_stdin, seed=0x7f77051e
length= 2 megabytes (2^21 bytes), time= 3.2 seconds
Test Name Raw Processed Evaluation
BCFN(2+3,13-7,T) R= +14.8 p = 4.4e-5 mildly suspicious
DC6-9x1Bytes-1 R= +11.7 p = 1.5e-6 very suspicious
Gap-16:A R= +16.4 p = 9.7e-13 FAIL
Gap-16:B R= +66.6 p = 8.0e-48 FAIL !!!!
FPF-14+6/16:(0,14-3) R=+371.6 p = 1.7e-325 FAIL !!!!!!
FPF-14+6/16:all R=+249.4 p = 1.0e-220 FAIL !!!!!!
FPF-14+6/16:all2 R=+36026 p = 0 FAIL !!!!!!!!
[Low1/8]BCFN(2+0,13-8,T) R= +13.6 p = 2.1e-4 mildly suspicious
[Low1/8]BCFN(2+2,13-9,T) R= +17.3 p = 5.3e-5 mildly suspicious
[Low1/8]BCFN(2+3,13-9,T) R= +22.8 p = 3.1e-6 suspicious
[Low1/8]BCFN(2+4,13-9,T) R= +18.8 p = 2.4e-5 mildly suspicious
[Low4/32]BCFN(2+0,13-8,T) R= +10.0 p = 1.8e-3 unusual
[Low4/32]BCFN(2+2,13-9,T) R= +13.1 p = 4.7e-4 unusual
...and 75 test result(s) without anomalies
Traceback (most recent call last):
File "LCGkeyed.py", line 27, in <module>
print(binary, end='')
BrokenPipeError: [Errno 32] Broken pipe
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
BrokenPipeError: [Errno 32] Broken pipe
Ale oblewa zaledwie po 2 MB. Czyli znów zupełnie inaczej niż u Ciebie. Bez konwertera
oblewa standardowo bardzo wiele testów, z konwerterem jest lepiej, ale nadal inaczej,
niż u Ciebie. Nie ucinałem pierwszych bitów. Podam kilka pierwszych wyników:
0000000000000001111110101001000001101001010010011111
0010110001111100001100001011101000111011001110111010
1010101000001101100001010101001100001110100110111101
1100010001000111100000010100001
0001100111000001011101010010011001111001001100010000
0111100101101110000101001100111001000110101100001100
1111111000111110110010011011000010111100100010001000
0110000001110100101110010100110
1010001111010110101001010110011001110100101000001011
0100110100100101000011000011110101101110010111010100
1110110110010010100000000111110111000001111100001011
0111110010101101100010001001110
1111000001110010011010001101111111000001111101011100
1000001101101100110100010110010011001011101111110100
0111011011001011101101100001000111110100001100100010
0000101101011111101101101111100
0000110111010011101010010010000101000111110000110011
1110011100101011010101111010001101001100000011011100
0000101100101001100001001100111001110111000110010011
1110100111011001101001100100110
0100010110100010110111111010010000101101111010111001
0111111100011101101010101011110110000100010011101001
0000111000101101111001100101000001001101101100101000
1000111101110010010100100000001
0110010111010001110100100111110010000000001101100110
1101100111001000011011100101011010110010011010000001
0100111001011101110001100011101110100110011110111011
1000001100100010010011111001101
1101110000110011010101101101100101000100000111001000
0101010010000010111010101100110010011101110110001110
0000001000000001110000011101000010110011001011110001
0100011101000000100100110010111
0100001110110111111000001111000110001001011101110010
0011011100111001111110000001000110100000110101011001
0011101110100010001011000111111111010011111110001011
0010011101111011001000100001110
1111100100011000110000100100001100000000010111001001
0111101010011110000100110101111100101101111110010100
1100101100100001101010110000001001011000100000001001
1110100000101111111010100100111
1100101010111011110101100100111010101010011000101110
1010001001100101001100000110001110101111001000101111
1100100101100110011100000101111101111111011110101111
1010000101000110111110010001000
1100111110010000101011111011010010001101011001110101
1001111110111001000001100000001101111111011001000100
1010111111001010010110111111010111001111110000100100
0111100100000000101111011111011
1000011111010001010111011010011001111000111110110010
0100011110101111111100011100000001010010110101000000
0011010101110000101100101010001011010110111100000001
1000110111010010000110110000010
0011110111001101111001111111100011011001010010111000
1000001111001000010111110011011110110110000101001111
0000010100100011111000101010000111111011111110001110
0101001011111010101011110101101
1111110001101001001001100000110011001000111011111111
1001000110101100000100110100011110100011111000011111
1010110001010011100011001110110011010001110010000000
1101110111011111111101101100000
0010100110110011110111000011010011101110000101111101
0110000100001110100100010000010001100010010100000000
0000101110001000010000100010101111111111000111010011
0111010111110101000000001100111
0101100111010011000010000101010101000011001010001001
1101101000111101001101001010010101101110110001111010
0100100100111101111000100010101001100110100000001101
0001100010001111001110000100101
0010110110001101011010011111001100010011001100001001
0000100000110001101110110011101011100100011100010010
1011111001100111001101110111011010101001000111000011
0101110100011011010111010010111
1111110010001110011000000101101010001010001000001110
1111111111110101100100010101001100110111100100000111
1011000101101101001011000000001111100110000111000101
1011101111100100001011010010010
1100010101111110000101111000011010001000011110100111
0101010000011010000100100101001000111101010101010001
1111101000101101000000010101110011111001010101101110
0001001011011001011101010111111
1111100111011001000011000010101010101000100110000110
1100110101010000010111100101101011010111101011111101
0110101101100101010011010100000001010100001010111010
1110101000101111010001000000100
1010000100000111110000001110100110110111011111110011
0111101011011100100011000110011000010011100101010101
1101101011101000111001001110110101101000111001000100
0000111010101100001000110011001
0011000100000010101011011101111010110100111011111000
0001101010101001100111000111100100101111001110011010
0000000000111101010110000000100001110001001000011111
1111001101001010011101101011000
0101011101001100111100111100010000001001001010011110
1100000000001000101001000100110001110101001101001001
1010110101110000011010011110001100100010110011101110
0000001000110111101100010100101
1100101000100101101001011000101101110111010111000111
1010111110111000110010101100000110011101011000000101
1100100110100100111011001001100101001111100111110110
1111001110101111111010010011010
1100110101001100100111100101010111100100100010000000
1000100010101001110001001110001001010100101011111011
0010000000111100100110000001011011100100110110111000
1011000000000111000101101001001
1011101100100010111101011100001111100110001101010111
0100110010110010001100001011100011000101100110010010
1101000100100000111110101011111010
Czy testujesz to samo?
-
58. Data: 2021-08-23 05:23:13
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
Właściwie to mój generator oblewa po 16 MB:
length= 16 megabytes (2^24 bytes), time= 2.1 seconds
A ten LCG oblewa po 2 MB:
length= 2 megabytes (2^21 bytes), time= 3.3 seconds
Czyli mój radzi sobie chyba lepiej. O ile to ma w ogóle jakiekolwiek znaczenie, skoro
testy prawdopodobnie nie są wykonywane poprawnie. Raczej wróżenie z fusów.
-
59. Data: 2021-08-23 11:18:02
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "M.M." <m...@g...com>
On Monday, August 23, 2021 at 5:23:14 AM UTC+2, o...@g...com wrote:
> Właściwie to mój generator oblewa po 16 MB:
>
> length= 16 megabytes (2^24 bytes), time= 2.1 seconds
>
> A ten LCG oblewa po 2 MB:
>
> length= 2 megabytes (2^21 bytes), time= 3.3 seconds
>
> Czyli mój radzi sobie chyba lepiej. O ile to ma w ogóle jakiekolwiek znaczenie,
skoro testy prawdopodobnie nie są wykonywane poprawnie. Raczej wróżenie z fusów.
Jeśli użyłeś tego samego generatora co ja, tych samych stałych A i B, jeśli
zainicjowałeś x=1, jeśli odrzuciłeś sto
początkowych wygenerowanych liczb (500 bitów), jeśli bierzesz tylko 5 najstarszych
bitów - to powinno być tak samo jak
u mnie... chociaż ja mam wersję PractRanda 0.94 a Ty 0.93 - nie wiem czy zostało
zmienione coś na tyle
istotnego aby wyniki testów były całkiem inne. Raczej w nowszej wersji testy powinny
być bardziej surowe.
Moje początkowe 1000 bitów wygląda tak:
./SimpPRNG 1 1000
1100010111000111110000011110101111001001011010001110
0011110011110000000011111001000101101111111000001111
1110100100110000011011001100101110100010010011011101
1111001010111011011101001101100110001001111000101011
0000010000011101011010011111101111110000010110010111
1110001010100101000000010111111000011001001110011110
1011010111110000100101100110100001110100000110101010
0011000100000110001111011100011100111110001011011101
0011001011001101100000100110110001101101111110010100
0010110101110111011010111111100001101101011101011011
1000001000011100100111000100011011000111100110001000
1001101100110001010001001111001110100101001000001101
0101000101111100100101110010011000001000001101101100
1101011100001010110100111101011010001000101100000001
0100111111010111001100111000111011001111001110101110
1000001001001001100100111110111110110000110010101011
0110011000101000101110000100101001001000000111010101
0100110100101110101111000100011100000000011000000010
1110000010110100110111011000100010101110000010010011
001101000101
Wyświetlam z tych 5 bitów począwszy od najmłodszego:
https://github.com/mmarszik/SimpPRNG/blob/main/main.
cpp
type_out v = r();
for( int k=0 ; k<bits && j<BUFF_SIZE && i<size ; k++, j++, i++ ) {
buff[j] = '0' + (v & 1);
v >>= 1;
}
Ale na jakość generatora i zaliczenie testów nie powinno wpłynąć wyświetlanie od
najstarszego.
Początkowe liczby z tego generatora są statystycznie bardzo słabe jeśli inicjuje się
małą liczbą
(np. jedynką), jest dużo zer na początku, warto odrzucić np. 100 początkowych
generowań.
Pozdrawiam
-
60. Data: 2021-08-23 14:31:38
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
poniedziałek, 23 sierpnia 2021 o 11:18:03 UTC+2 M.M. napisał(a):
> On Monday, August 23, 2021 at 5:23:14 AM UTC+2, o...@g...com wrote:
> > Właściwie to mój generator oblewa po 16 MB:
> >
> > length= 16 megabytes (2^24 bytes), time= 2.1 seconds
> >
> > A ten LCG oblewa po 2 MB:
> >
> > length= 2 megabytes (2^21 bytes), time= 3.3 seconds
> >
> > Czyli mój radzi sobie chyba lepiej. O ile to ma w ogóle jakiekolwiek znaczenie,
skoro testy prawdopodobnie nie są wykonywane poprawnie. Raczej wróżenie z fusów.
> Jeśli użyłeś tego samego generatora co ja, tych samych stałych A i B, jeśli
zainicjowałeś x=1, jeśli odrzuciłeś sto
> początkowych wygenerowanych liczb (500 bitów), jeśli bierzesz tylko 5 najstarszych
bitów - to powinno być tak samo jak
> u mnie... chociaż ja mam wersję PractRanda 0.94 a Ty 0.93 - nie wiem czy zostało
zmienione coś na tyle
> istotnego aby wyniki testów były całkiem inne. Raczej w nowszej wersji testy
powinny być bardziej surowe.
>
> Moje początkowe 1000 bitów wygląda tak:
> ./SimpPRNG 1 1000
> 1100010111000111110000011110101111001001011010001110
0011110011110000000011111001000101101111111000001111
1110100100110000011011001100101110100010010011011101
1111001010111011011101001101100110001001111000101011
0000010000011101011010011111101111110000010110010111
1110001010100101000000010111111000011001001110011110
1011010111110000100101100110100001110100000110101010
0011000100000110001111011100011100111110001011011101
0011001011001101100000100110110001101101111110010100
0010110101110111011010111111100001101101011101011011
1000001000011100100111000100011011000111100110001000
1001101100110001010001001111001110100101001000001101
0101000101111100100101110010011000001000001101101100
1101011100001010110100111101011010001000101100000001
0100111111010111001100111000111011001111001110101110
1000001001001001100100111110111110110000110010101011
0110011000101000101110000100101001001000000111010101
0100110100101110101111000100011100000000011000000010
1110000010110100110111011000100010101110000010010011
001101000101
>
> Wyświetlam z tych 5 bitów począwszy od najmłodszego:
>
> https://github.com/mmarszik/SimpPRNG/blob/main/main.
cpp
> type_out v = r();
> for( int k=0 ; k<bits && j<BUFF_SIZE && i<size ; k++, j++, i++ ) {
> buff[j] = '0' + (v & 1);
> v >>= 1;
> }
>
> Ale na jakość generatora i zaliczenie testów nie powinno wpłynąć wyświetlanie od
najstarszego.
>
> Początkowe liczby z tego generatora są statystycznie bardzo słabe jeśli inicjuje
się małą liczbą
> (np. jedynką), jest dużo zer na początku, warto odrzucić np. 100 początkowych
generowań.
>
> Pozdrawiam
Mam inne wyniki. Oto wyniki w formacie dziesiętnym:
x = 1
x = (x * 79908886691 + 8143076871913) & 340282366920938463463374607431768211455 =
8222985758604
8222985758604 >> 123 = 0
x = (8222985758604 * 79908886691 + 8143076871913) &
340282366920938463463374607431768211455 = 657089637254136791211277
657089637254136791211277 >> 123 = 0
x = (657089637254136791211277 * 79908886691 + 8143076871913) &
340282366920938463463374607431768211455 = 52507301369171109219924401511286320
52507301369171109219924401511286320 >> 123 = 0
x = (52507301369171109219924401511286320 * 79908886691 + 8143076871913) &
340282366920938463463374607431768211455 = 333442790507095493699328894974793383801
333442790507095493699328894974793383801 >> 123 = 31
x = (333442790507095493699328894974793383801 * 79908886691 + 8143076871913) &
340282366920938463463374607431768211455 = 225174366013576153541971350915313012980
225174366013576153541971350915313012980 >> 123 = 21
Czyli uzyskuję:
0
0
0
31
21
I tak dalej. Jak mogą tu wychodzić inne wyniki?