-
41. Data: 2021-08-22 02:47:06
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
niedziela, 22 sierpnia 2021 o 02:43:32 UTC+2 M.M. napisał(a):
> On Sunday, August 22, 2021 at 2:32:25 AM UTC+2, o...@g...com wrote:
> > Zrobiłem hexdump pierwszych bitów:
> >
> > python3 Mojgenerator01.py | hexdump -n4000 | head
> >
> > 0000000 3031 3131 3131 3130 3131 3031 3131 3130
> > 0000010 3131 3030 3030 3131 3030 3131 3131 3030
> > 0000020 3030 3130 3031 3131 3030 3030 3131 3130
> > 0000030 3030 3130 3030 3030 3131 3131 3131 3131
> > 0000040 3031 3130 3131 3031 3031 3131 3030 3030
> > 0000050 3031 3030 3030 3031 3130 3130 3030 3131
> > 0000060 3131 3131 3131 3031 3130 3031 3131 3131
> > 0000070 3030 3130 3130 3030 3030 0a31 3131 3130
> > 0000080 3131 3031 3030 3131 3131 3130 3031 3131
> > 0000090 3030 3131 3030 3030 3030 3031 3030 3131
> > Traceback (most recent call last):
> > File "Collatzgenerator01.py", line 50, in <module>
> > print(binary)
> > BrokenPipeError: [Errno 32] Broken pipe
> > I nie wygląda to dobrze. Po pierwsze nie mogę zrobić hexdumpu 4000 bajtów. Czy ta
komenda ma jakieś ograniczenie, czy program mi się wykrzacza? Po drugie, tak na oko,
to nie są losowe bity. Nie wiem o co chodzi. Czyżbym się walnął w kodzie albo napisał
aż tak beznadziejny generator?
> Wygląda bardzo dobrze, ale nie jak dane binarne, ale jak dane tekstowe, czyli
potrzebujesz konwertera. U mnie wygląda podobnie:
>
> ./SimpPRNG 1 300 | xxd
> 00000000: 3131 3030 3031 3031 3131 3030 3031 3131 1100010111000111
> 00000010: 3131 3030 3030 3031 3131 3130 3130 3131 1100000111101011
> 00000020: 3131 3030 3130 3031 3031 3130 3130 3030 1100100101101000
> 00000030: 3131 3130 3030 3131 3131 3030 3131 3131 1110001111001111
> 00000040: 3030 3030 3030 3030 3131 3131 3130 3031 0000000011111001
> 00000050: 3030 3031 3031 3130 3131 3131 3131 3130 0001011011111110
> 00000060: 3030 3030 3131 3131 3131 3130 3130 3031 0000111111101001
> 00000070: 3030 3131 3030 3030 3031 3130 3131 3030 0011000001101100
> 00000080: 3131 3030 3130 3131 3130 3130 3030 3130 1100101110100010
> 00000090: 3031 3030 3131 3031 3131 3031 3131 3131 0100110111011111
> 000000a0: 3030 3130 3130 3131 3130 3131 3031 3131 0010101110110111
> 000000b0: 3031 3030 3131 3031 3130 3031 3130 3030 0100110110011000
> 000000c0: 3130 3031 3131 3130 3030 3130 3130 3131 1001111000101011
> 000000d0: 3030 3030 3031 3030 3030 3031 3131 3031 0000010000011101
> 000000e0: 3031 3130 3130 3031 3131 3131 3130 3131 0110100111111011
> 000000f0: 3131 3131 3030 3030 3031 3031 3130 3031 1111000001011001
> 00000100: 3031 3131 3131 3130 3030 3130 3130 3130 0111111000101010
> 00000110: 3031 3031 3030 3030 3030 3031 3031 3131 0101000000010111
> 00000120: 3131 3130 3030 3031 3130 3031 111000011001
>
> Tylko u CIebie jest znak '0a31' na którym zapewne wywala się konwerter.
> Zobacz skąd jest to 0a, wywal i uruchom przez konwerter.
>
> Pozdrawiam
Pierwsze 100 liczb. Nie widzę tam żadnych podejrzanych znaków:
1011110111101101110000110011110000011011000011010001
0000111111111001111010110000100000100101001111111110
0110111100010100001
1101111000111101101100110000001000111010110011110100
0001101000110001010101010001101110011101100101101110
101000010001011001110000
1011110001100110011101101011110110011110010110110111
1010110111011011111100110110001011101100100011110011
101001011111011111111
1110100101111111010011110000010111110000010101101111
1011101000110000110110001010011111000101000110011111
11011111000100110111011
1100101010011011111101100101100100011011110000101010
1111100000001101010101111110001010010111110100100100
11000100110110010101
1000000111100111010100000001000011101001001100010110
1011100000101111010010011011111101010101101011100101
110001001011011011110110
1010001001110100101010001101001001100100010011010010
1011111000000011000111110101001011110001011000001110
0010100000110001100011
1110110100111110111101011111100011011011011010011111
0001000001001110001001011111001000001010010010110011
00000110100100010100
1000010101000000000110011111100101010010000010100100
0001011000100011011101011000011001111101001100000110
1010010111110101110101
1000010100010011001100000010110100001000011111010001
0110011000000010111000110000001011101100011111000100
00100100001101101101000
1111000010100111011011000001010010011111001000011101
0011010000010110010011010110010011010000011110011100
010001100111001110010001
1011111100111111111001000111011100110110110010100111
1110011111010001011001101000111010101000110011111001
101100001010001000111110
1100110110101101011111110000000110010010001110011111
1101010001001001010010111110001110111011101011100110
00101100111010010111110
1101001100011010100000001011110111010100001111100000
1001110000101100010101110111111111101110100111110000
100010100100110000000110
1011110011001010011011111101101101001101101110001110
1101010100101111000100111010001001000001010111110010
001101011010101101001110
1000101011010100100001011010001110011111111100101101
0101111001000110010111010000101100100010110001110101
101100100110111010110111
1111110000110011111010110111110010100011000000000110
1011111011011111010000110111100011000110000110000110
00011011010001010101
1100001111011100000011001100000010011101111101000111
0010010000000101001110011111110000101011001010111100
011101110101011000011010
1101001001010010110010011101000101111011011100101100
1001010111000000010100111101000100010010010110111001
0000001000011100101000
1110001010010100000010100101110010011110100010111111
0001100111100100110110011110100000011010010111101010
01000010000100110011000
1111001101011100001010110010011101100011100000011110
0000000111001100101011100001000101100101110101101010
111000110001101110110001
1101101011001110110100101101010100011101111100101001
1001111001010000001011110011110011111001000111111111
010110111010100001001100
1100110100000001000011101010111110010101011101101001
0101001100010111111000000011101010111101010100010101
01000011001100010110010
1001000001111100000000000011100000011011010101010100
0110011101110001111101010111110010111011101000001000
111110001110100101101101
1000011011010110100001111111101100110000111111101000
1000010001100100011010111010110101111001111110000000
01011000011000101100000
1110101100011010100111111011010101111110100111011010
1100011100111000101111101011110011111100010110101011
10101110010101110010111
1111011110101010000100101111100101000000101110000010
1101010010111110101110010101111001101100000011000000
00000100001111001100000
1110100011011110000001111101011001110100110101101011
1011100001101001000001000001101100111001011100000111
1000110000010010011100
1100110001101010000101001111110001110010000101110010
0101111010001010101000011101011000110101001100110110
111100111101111010
1111010010010110001110010101101101001010000000011111
0000010110110010000000100000011011000001010100010100
010010001100000101101
1001011011100000000100001101111010010010100001101011
0000100010110000100111001100110001110110010010101000
100001011001110110101000
1001100110111000110111101001010100011000011110110000
0101010010100000011100111110000011010110001100101101
01100101110110101010100
1101011011011000010100110010011100111111100101000000
0100111100111000010111000001111110010011000100111001
00000100110100010001001
1100001111011000100001110000100000101010001101111110
1101000011100110011111111100110010011111111011011000
010000010001010011100101
1100000001001100110011101111100100010001111011011100
1111110001100001000011100011111100010110100001001010
111110101111000111100111
1001000111111011110111110001110100100111110110100001
0110000000000100011100010111000011011101100010101001
110000111101101111010100
1010110101100000010101111110101110010111000001000001
0001001011010010010011100001111100110100111001001110
01111111101010110000
1100001001001111111010101000011011001100111000100111
0101010011101001011111110101100000100100010101110011
101001111011100111111000
1100011001001010010101101111011001001100110111011101
1000010100011100110010101101010101000100011001100011
10111101100110010100110
1100101101000010011010000011001110000101111100001110
0101100000111111100100011000100100000000000000111110
00111101111001111101111
1011010011000110010001011111101101100000011010111101
1011110100111000001010011011111111100000010011010110
001110110000110001111101
1100011010011000101000110001111100010001101011111010
1010000111110101100000100011110011111101010111100001
000111110001010000011000
1000101110111101101000011011001010110110110110001100
1100100011111011001101101011100110110011100101011001
110100110000111100111101
1000001010011000001111011001110010111110001011000111
1000100011110011100010000010100000111111100001101011
011100011000010110011
1011010010010101111000011000000110101010010111100100
1011010111100111000111001101101010001001011111100010
0100000101010110001101
1100011100101000010110101101111011000000111110100101
1000010010111011010011011111111110100100110001111011
1000111111111101100111
1101110010111100000101101000111100110101111101100100
0010110010001010001101110000100101101110010101100110
11111011000001010001111
1100111101111001001110111110100011111110111111010011
1111010000110010111001011101101100111011110011001011
01010110111100110000
1111111011000100000101111101001100101010100000001111
0011100001101111000110101010011111110101111010011000
111100101000001100100000
1100000100101010011011110100010100011101100001110010
1101001100001110101100110000000100001100110111011101
11011110000001101000100
1010011111100100101000010000100011101010110100010100
1001010100001011111100001100101111001001100000010011
001100010101100100001101
1110010110011001110100010100101110101001000001010000
0111100011001011110101000110110100011100100001001011
100000000000101001100010
1101010000101101110101001011010111100100001010110001
0001111010101011111011001010010011101010000111011000
10111011100011111010001
1111111111100101000001101110010110000110011011111010
0101100000111100111111000010011101001000101101000100
101100001110100011011000
1111010001000001011001111001010011000000011101110001
1011111011101001110100011010100110100101110001101011
1100001110110110110010
1100010000001111111011001101111010100100011111000111
0100010101000001110010101001110010100110100010000000
10010101100111100111010
1001101000000110001011001100011001100001100100011011
0010010110101001111011010011011111011000001101011101
110111001111001110001011
1101000010010000011010011000100111001111010010110010
1010010101110100100110100000101110010101110111111111
100111101001000010110
1111000011010110000111110010010010010101010000011001
1110011110001100010001011001001101110001001101100111
11000101010110010010101
1000111111111010000101101011011001011000001010111111
1010001111101010011100110101000010111000111101111101
100010101011111011101111
1101111000010111111100010011001001010010100001111011
1101001101000110101101000110100010011100011001011011
01000101000111110010100
1001101011001010011111101100101010110100011111001101
1011011111111001101010000001110101111100011011101011
111010101100010110100110
1110011111101110111010001100101111100001101010011101
0000001010100110000010001010100110111101110000001000
00010010110001000000001
1100010011111001000010001111100111010011000000111011
1000110001101001100111001111110011001110011001010111
111000111110000001000111
1100101000100110100001111110011100101100111000000011
0111110011011101101111111010000100000111010111111001
011111110101000100010011
1011011011001011010011001101001100011111110100101010
1001111010110110111100010000111000100000010010001100
001011000010000011
1000101111101101110011100000011110110100011110100011
1110111101100000110101110110010100000001010011000110
010010111011110010001
1001101110100101011100101000001011011100111100111100
1001101000001100111011111111110110010001111000111010
000001100100001010111001
1100010110111010001011001011100101110100000111111100
0111101101001111101110010100110010000110100010011101
110011010011110101001110
1111010000110011111001100111010010101011101110011111
0000010110011010111010000010100000111010010101101000
101000001010000010101110
1111110010101011010110001100010110101110100011010101
1001010111001001111000111010101011110001110010110111
001001101100011110000100
1010111111010111000100111000010110101110000010010011
0100111000100111001101011001110010100001010000111011
100010000111011001
1001111110111011111110000001101001110001011001100011
1101011000100100010101010001001101100100011100001110
1001010000011010010000
1111000011001010010010111101001111000001110011101100
1011010000100110011001011011000100011111100010000011
1110110001010000111010
1000011011100001011100101010011000010100111011011000
1110010100001111110110111011100110010101011000001010
110110111010010001111111
1000111111110110111001111101111100010010100111110110
0100100000111100010111110001110010111001101011011001
0001101100101010111
1010100110110100100101111010111010110010010010001111
0001000110010111100001010100111000011000110101100011
0000110100101111000
1011111110000010011110010010011101001011011010101000
0000110000001000000010110010011111000110010001011010
110011100111110100011011
1110011110101010101111100110101100100011100110101010
0100111110011111100000011100111110011011010010111110
101011110000001100100001
1010010111011011111101101101111111101100110101110011
1011101011001011110101010100001110010100001010101101
110010111100110111010
1000110000111010110000111001101100101010010111010001
1110010000001100101110110111010110000111100111110110
1010001100111001011
1111001111010000110110111011111011111010000111101011
1001110101000011110100000111011101001011110100010111
001000000011001010010000
1011101010101100001100110111000100111001010111000101
0011011010101011001111100011010110110001110110011111
101100110001100011010
1100110111100110000000000011011100010111001001100110
1001101100100100001011011101110101110111100011011101
011100000110100001100001
1110000101000101011001010100110000010111111011111111
1011010011010111100110110000000111111101101101001110
01010001111100100101110
1011110010001011001001101001011000111110000111000000
1101000100111101100101000100100101011101010000110100
01100000101010000100001
1111011110101011011000011010011001010111101000010000
1111101010001111101010111011100111101010001110000100
000011110111101000111001
1010100011111001011000011001001001101000001001100101
0100010110000010011100100111111100000111000111000110
1110110000110100101101
1011000010100010100001111101101111110000001011111110
0000111111010101000100001110001001101000111111000000
01011111001111101111000
1000011110111111101011010111011010000011011101100101
1011000100111011111011101110111010110101000110100100
101010001000110110010101
1000000101011010010000000111011100100110000100010000
1101111111010101100110001001001001110100100000100100
00110110010010010010111
1000010011101000110101001010000100011101101100110001
0011000110001010101100110010001011110001111101111111
00110010110010110010110
1011101111111100110100000111000101010100100010100011
0101010011000011100101011001110001010010000001100101
11011100001111011100011
1010100110000001101001100100000100110111110001001010
0111011111000010001100100001111010000011000100011100
101011000100111111100111
1101111011111110110011000011110101101010010100111111
1101110001111101100101111100010001111111011011001101
110110100100110000111011
1001100100000100010011101010100101001101000110111100
1010000101011110000010010110010110111011101111001111
0111110111110011111
1001101110100011001111001010110000100010100001110001
0100000111101000010111101010101001000111000110111110
0111010100001000100010
1100110011010110001111101011111000010000110010111011
1000110110111011111100010011000100101010011101001101
000100001001111111000011
1001100101011110011010010001010011011010111100001111
0011000000000110110001010101010010010110100111100101
00000111111110100010011
1001100110000111101001110100011101100101010001011000
0010011011100001000101101111011000101000100010111111
111010111110010010000110
-
42. Data: 2021-08-22 02:54:07
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "M.M." <m...@g...com>
On Sunday, August 22, 2021 at 2:47:07 AM UTC+2, o...@g...com wrote:
> niedziela, 22 sierpnia 2021 o 02:43:32 UTC+2 M.M. napisał(a):
> > On Sunday, August 22, 2021 at 2:32:25 AM UTC+2, o...@g...com wrote:
> > > Zrobiłem hexdump pierwszych bitów:
> > >
> > > python3 Mojgenerator01.py | hexdump -n4000 | head
> > >
> > > 0000000 3031 3131 3131 3130 3131 3031 3131 3130
> > > 0000010 3131 3030 3030 3131 3030 3131 3131 3030
> > > 0000020 3030 3130 3031 3131 3030 3030 3131 3130
> > > 0000030 3030 3130 3030 3030 3131 3131 3131 3131
> > > 0000040 3031 3130 3131 3031 3031 3131 3030 3030
> > > 0000050 3031 3030 3030 3031 3130 3130 3030 3131
> > > 0000060 3131 3131 3131 3031 3130 3031 3131 3131
> > > 0000070 3030 3130 3130 3030 3030 0a31 3131 3130
> > > 0000080 3131 3031 3030 3131 3131 3130 3031 3131
> > > 0000090 3030 3131 3030 3030 3030 3031 3030 3131
> > > Traceback (most recent call last):
> > > File "Collatzgenerator01.py", line 50, in <module>
> > > print(binary)
> > > BrokenPipeError: [Errno 32] Broken pipe
> > > I nie wygląda to dobrze. Po pierwsze nie mogę zrobić hexdumpu 4000 bajtów. Czy
ta komenda ma jakieś ograniczenie, czy program mi się wykrzacza? Po drugie, tak na
oko, to nie są losowe bity. Nie wiem o co chodzi. Czyżbym się walnął w kodzie albo
napisał aż tak beznadziejny generator?
> > Wygląda bardzo dobrze, ale nie jak dane binarne, ale jak dane tekstowe, czyli
potrzebujesz konwertera. U mnie wygląda podobnie:
> >
> > ./SimpPRNG 1 300 | xxd
> > 00000000: 3131 3030 3031 3031 3131 3030 3031 3131 1100010111000111
> > 00000010: 3131 3030 3030 3031 3131 3130 3130 3131 1100000111101011
> > 00000020: 3131 3030 3130 3031 3031 3130 3130 3030 1100100101101000
> > 00000030: 3131 3130 3030 3131 3131 3030 3131 3131 1110001111001111
> > 00000040: 3030 3030 3030 3030 3131 3131 3130 3031 0000000011111001
> > 00000050: 3030 3031 3031 3130 3131 3131 3131 3130 0001011011111110
> > 00000060: 3030 3030 3131 3131 3131 3130 3130 3031 0000111111101001
> > 00000070: 3030 3131 3030 3030 3031 3130 3131 3030 0011000001101100
> > 00000080: 3131 3030 3130 3131 3130 3130 3030 3130 1100101110100010
> > 00000090: 3031 3030 3131 3031 3131 3031 3131 3131 0100110111011111
> > 000000a0: 3030 3130 3130 3131 3130 3131 3031 3131 0010101110110111
> > 000000b0: 3031 3030 3131 3031 3130 3031 3130 3030 0100110110011000
> > 000000c0: 3130 3031 3131 3130 3030 3130 3130 3131 1001111000101011
> > 000000d0: 3030 3030 3031 3030 3030 3031 3131 3031 0000010000011101
> > 000000e0: 3031 3130 3130 3031 3131 3131 3130 3131 0110100111111011
> > 000000f0: 3131 3131 3030 3030 3031 3031 3130 3031 1111000001011001
> > 00000100: 3031 3131 3131 3130 3030 3130 3130 3130 0111111000101010
> > 00000110: 3031 3031 3030 3030 3030 3031 3031 3131 0101000000010111
> > 00000120: 3131 3130 3030 3031 3130 3031 111000011001
> >
> > Tylko u CIebie jest znak '0a31' na którym zapewne wywala się konwerter.
> > Zobacz skąd jest to 0a, wywal i uruchom przez konwerter.
> >
> > Pozdrawiam
> Pierwsze 100 liczb. Nie widzę tam żadnych podejrzanych znaków:
A ja widzę że wszystkie liczby zaczynają się od jedynki, nie są równej długości, a
znaku nowej linii po prostu nie zobaczysz, wydać po prostu nową linię, zobacz jak to
wygląda u mnie:
./SimpPRNG 1 3000
1100010111000111110000011110101111001001011010001110
0011110011110000000011111001000101101111111000001111
1110100100110000011011001100101110100010010011011101
1111001010111011011101001101100110001001111000101011
0000010000011101011010011111101111110000010110010111
1110001010100101000000010111111000011001001110011110
1011010111110000100101100110100001110100000110101010
0011000100000110001111011100011100111110001011011101
0011001011001101100000100110110001101101111110010100
0010110101110111011010111111100001101101011101011011
1000001000011100100111000100011011000111100110001000
1001101100110001010001001111001110100101001000001101
0101000101111100100101110010011000001000001101101100
1101011100001010110100111101011010001000101100000001
0100111111010111001100111000111011001111001110101110
1000001001001001100100111110111110110000110010101011
0110011000101000101110000100101001001000000111010101
0100110100101110101111000100011100000000011000000010
1110000010110100110111011000100010101110000010010011
0011010001011110010110111110000001111011000010011101
0111000010110111100111001011110000010001001011100001
0101001111100011101000101000000111111101111110011111
1010001001111100111100011010001100001101100111100011
0001000010100111000000001000001110100101111001010111
1010000011001110110011101101111110100011001101000100
0110010101000010010001101001000000011001010111000011
1101011110010111001001101010101111011100110110011010
1010100011011010101010100000110001010001101100111001
1010100110100011111010011101001100011101000011110111
0101111011111110101011010001000111101100110100001100
1111001001010001110111011100101100011010111001101011
1001011110011000000001110000111010111110011010000101
0111110100101001110110111111101111000011100100100010
0111000011000011110111101110110000011111000111010011
0111001111001000101111100110010011110110101111110001
0001110000100101011000010000000101111101100000011010
1010100001011110110001110000100011110110010100000110
1100001100011011110011111011100111111100000110001011
1101010001000000111000011110110011111010110100011010
1011110000000010110001011111010000010111101101111111
1100001001010011111101010111011010111101011110110001
0011001000001001101001111000111011111101001011000110
1100000110010001101111100000111111001011100110010100
1110011000111010011001010111000010100001110101110111
1101111110110000010100011001001110111000111011011100
0111001000111111101010000100000101100010000010001000
0110100100001000000100000111000100001000010101011111
1011111110010010111011101010111000100000010011010111
0011010110011000100101000101000001100110001011001011
0110001101110110001001010010110110111100011011100100
0100111110111100100010100100101100100010100000010100
1100001001111011100100001010110100011010110101101110
0100111000101100001100010000001000010011010110110111
1100110100100111100010000101011111011000111010110110
1101101101010010001110110001101000101101101010101011
1101011111100111100011001000001101001010101000100010
0001101111111111111101000100010101100101100011110001
011100011011010001101010010001100000
Pozdrawiam
-
43. Data: 2021-08-22 02:56:01
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
niedziela, 22 sierpnia 2021 o 02:46:22 UTC+2 M.M. napisał(a):
> On Saturday, August 21, 2021 at 11:37:18 PM UTC+2, o...@g...com wrote:
> > PS Program w konsoli działa normalnie, wypisuje liczby binarnie:
> >
> > 1001000001111110100101001011111000011110011000110111
0000110101100001110110000100111010001001101001010101
000001110001011010011010
> > 1100001001000110001101110100010010110010011000101000
1101110111011010001010101110100010101010010011011111
000111001101101001100
> > 1110000000100000011011001100010010101100000010101111
1010111000111011010101011010100111000001100110011010
111000110011110110101000
> > 1110111110101001110100000000101101010111100010110011
0100100001100000011001001010001001010101111010100100
11101010100110101010000
> I jeszcze jedno, wszystkie te liczby zaczynają się od jedynki i nie są równej
długości, zobacz co usuwa zera wiodące - w teście muszą być.
>
> Pozdrawiam
Nie mam pojęcia skąd było to "0a31", zmieniłem seed i już go nie ma (choć nie mam
żadnej pewności, że znów się gdzieś nie pojawi). Wiodące zera usuwa konwerter pythona
na liczby binarne. Jeśli liczba jest mniejsza niż 128-bitów, to żadne zera na
przodzie nie zostaną wypisane. Po zmianie seeda mam problem "Segmentation fault (core
dumped)", zarówno z konwerterem jak i bez:
RNG_test using PractRand version 0.93
RNG = RNG_stdin, seed = 0xc3b8ea62
test set = normal, folding = standard(unknown format)
Segmentation fault (core dumped)
-
44. Data: 2021-08-22 02:58:25
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
niedziela, 22 sierpnia 2021 o 02:54:08 UTC+2 M.M. napisał(a):
> On Sunday, August 22, 2021 at 2:47:07 AM UTC+2, o...@g...com wrote:
> > niedziela, 22 sierpnia 2021 o 02:43:32 UTC+2 M.M. napisał(a):
> > > On Sunday, August 22, 2021 at 2:32:25 AM UTC+2, o...@g...com wrote:
> > > > Zrobiłem hexdump pierwszych bitów:
> > > >
> > > > python3 Mojgenerator01.py | hexdump -n4000 | head
> > > >
> > > > 0000000 3031 3131 3131 3130 3131 3031 3131 3130
> > > > 0000010 3131 3030 3030 3131 3030 3131 3131 3030
> > > > 0000020 3030 3130 3031 3131 3030 3030 3131 3130
> > > > 0000030 3030 3130 3030 3030 3131 3131 3131 3131
> > > > 0000040 3031 3130 3131 3031 3031 3131 3030 3030
> > > > 0000050 3031 3030 3030 3031 3130 3130 3030 3131
> > > > 0000060 3131 3131 3131 3031 3130 3031 3131 3131
> > > > 0000070 3030 3130 3130 3030 3030 0a31 3131 3130
> > > > 0000080 3131 3031 3030 3131 3131 3130 3031 3131
> > > > 0000090 3030 3131 3030 3030 3030 3031 3030 3131
> > > > Traceback (most recent call last):
> > > > File "Collatzgenerator01.py", line 50, in <module>
> > > > print(binary)
> > > > BrokenPipeError: [Errno 32] Broken pipe
> > > > I nie wygląda to dobrze. Po pierwsze nie mogę zrobić hexdumpu 4000 bajtów.
Czy ta komenda ma jakieś ograniczenie, czy program mi się wykrzacza? Po drugie, tak
na oko, to nie są losowe bity. Nie wiem o co chodzi. Czyżbym się walnął w kodzie albo
napisał aż tak beznadziejny generator?
> > > Wygląda bardzo dobrze, ale nie jak dane binarne, ale jak dane tekstowe, czyli
potrzebujesz konwertera. U mnie wygląda podobnie:
> > >
> > > ./SimpPRNG 1 300 | xxd
> > > 00000000: 3131 3030 3031 3031 3131 3030 3031 3131 1100010111000111
> > > 00000010: 3131 3030 3030 3031 3131 3130 3130 3131 1100000111101011
> > > 00000020: 3131 3030 3130 3031 3031 3130 3130 3030 1100100101101000
> > > 00000030: 3131 3130 3030 3131 3131 3030 3131 3131 1110001111001111
> > > 00000040: 3030 3030 3030 3030 3131 3131 3130 3031 0000000011111001
> > > 00000050: 3030 3031 3031 3130 3131 3131 3131 3130 0001011011111110
> > > 00000060: 3030 3030 3131 3131 3131 3130 3130 3031 0000111111101001
> > > 00000070: 3030 3131 3030 3030 3031 3130 3131 3030 0011000001101100
> > > 00000080: 3131 3030 3130 3131 3130 3130 3030 3130 1100101110100010
> > > 00000090: 3031 3030 3131 3031 3131 3031 3131 3131 0100110111011111
> > > 000000a0: 3030 3130 3130 3131 3130 3131 3031 3131 0010101110110111
> > > 000000b0: 3031 3030 3131 3031 3130 3031 3130 3030 0100110110011000
> > > 000000c0: 3130 3031 3131 3130 3030 3130 3130 3131 1001111000101011
> > > 000000d0: 3030 3030 3031 3030 3030 3031 3131 3031 0000010000011101
> > > 000000e0: 3031 3130 3130 3031 3131 3131 3130 3131 0110100111111011
> > > 000000f0: 3131 3131 3030 3030 3031 3031 3130 3031 1111000001011001
> > > 00000100: 3031 3131 3131 3130 3030 3130 3130 3130 0111111000101010
> > > 00000110: 3031 3031 3030 3030 3030 3031 3031 3131 0101000000010111
> > > 00000120: 3131 3130 3030 3031 3130 3031 111000011001
> > >
> > > Tylko u CIebie jest znak '0a31' na którym zapewne wywala się konwerter.
> > > Zobacz skąd jest to 0a, wywal i uruchom przez konwerter.
> > >
> > > Pozdrawiam
> > Pierwsze 100 liczb. Nie widzę tam żadnych podejrzanych znaków:
> A ja widzę że wszystkie liczby zaczynają się od jedynki, nie są równej długości, a
znaku nowej linii po prostu nie zobaczysz, wydać po prostu nową linię, zobacz jak to
wygląda u mnie:
>
>
> ./SimpPRNG 1 3000
> 1100010111000111110000011110101111001001011010001110
0011110011110000000011111001000101101111111000001111
1110100100110000011011001100101110100010010011011101
1111001010111011011101001101100110001001111000101011
0000010000011101011010011111101111110000010110010111
1110001010100101000000010111111000011001001110011110
1011010111110000100101100110100001110100000110101010
0011000100000110001111011100011100111110001011011101
0011001011001101100000100110110001101101111110010100
0010110101110111011010111111100001101101011101011011
1000001000011100100111000100011011000111100110001000
1001101100110001010001001111001110100101001000001101
0101000101111100100101110010011000001000001101101100
1101011100001010110100111101011010001000101100000001
0100111111010111001100111000111011001111001110101110
1000001001001001100100111110111110110000110010101011
0110011000101000101110000100101001001000000111010101
0100110100101110101111000100011100000000011000000010
1110000010110100110111011000100010101110000010010011
0011010001011110010110111110000001111011000010011101
0111000010110111100111001011110000010001001011100001
0101001111100011101000101000000111111101111110011111
1010001001111100111100011010001100001101100111100011
0001000010100111000000001000001110100101111001010111
1010000011001110110011101101111110100011001101000100
0110010101000010010001101001000000011001010111000011
1101011110010111001001101010101111011100110110011010
1010100011011010101010100000110001010001101100111001
1010100110100011111010011101001100011101000011110111
0101111011111110101011010001000111101100110100001100
1111001001010001110111011100101100011010111001101011
1001011110011000000001110000111010111110011010000101
0111110100101001110110111111101111000011100100100010
0111000011000011110111101110110000011111000111010011
0111001111001000101111100110010011110110101111110001
0001110000100101011000010000000101111101100000011010
1010100001011110110001110000100011110110010100000110
1100001100011011110011111011100111111100000110001011
1101010001000000111000011110110011111010110100011010
1011110000000010110001011111010000010111101101111111
1100001001010011111101010111011010111101011110110001
0011001000001001101001111000111011111101001011000110
1100000110010001101111100000111111001011100110010100
1110011000111010011001010111000010100001110101110111
1101111110110000010100011001001110111000111011011100
0111001000111111101010000100000101100010000010001000
0110100100001000000100000111000100001000010101011111
1011111110010010111011101010111000100000010011010111
0011010110011000100101000101000001100110001011001011
0110001101110110001001010010110110111100011011100100
0100111110111100100010100100101100100010100000010100
1100001001111011100100001010110100011010110101101110
0100111000101100001100010000001000010011010110110111
1100110100100111100010000101011111011000111010110110
1101101101010010001110110001101000101101101010101011
1101011111100111100011001000001101001010101000100010
0001101111111111111101000100010101100101100011110001
011100011011010001101010010001100000
>
> Pozdrawiam
Ok, czyli u mnie najwyraźniej jest nowa linia, pomimo, że nie została wstawiona.
Jeżeli te same dane zapisuję wprost do pliku, to wyglądają tak jak Twoje. Ale w
terminalu są wypisywane jedna pod drugą, pomimo, że ja żadnej nowej linii nie
wstawiam.
-
45. Data: 2021-08-22 03:10:59
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
O ile rozwiązanie na dopisane z powrotem uciętych zer można znaleźć, to jak rozwiązać
problem nowej linii - nie wiem. Każda iteracja pętli generuje liczbę, którą po prostu
wypisuję:
print(binary)
Nie wiem jak można to zrobić inaczej. Zrobić z tego stringa i sklejać to w jednego
wielkiego stringa? Raczej nie starczy pamięci na takiego stringa. Wydaje mi się, że
nie powinienem w ogóle tego wypisywać za pomocą print, tylko stworzyć funkcję, która
będzie zwracać liczbę. Wtedy nie będzie konwersji na ASCII, ani nie będzie znaków
nowej linii, bo liczby nie będą wypisywane w terminalu, ani nigdzie. Na razie nie
wiem jak taką funkcję napisać. Jutro spróbuję to zrobić.
-
46. Data: 2021-08-22 05:08:37
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
Jednak tego raczej nie przeskoczę. Print zawsze będzie wypisywał liczbę linijka po
linijce i będzie się tam prawdopodobnie pojawiać znak nowej linii, pomimo, że ja go
nie wstawiam. Nie będzie się pojawiać tylko podczas zapisu do pliku funkcją write. A
wywołanie funkcji bez printa ani write nic nie zrobi i nie poda nigdzie żadnych
liczb. Chyba, że można jakoś podać dane do konwertera bez używania printa.
Ewentualnie może coś jeszcze innego odpowiada za znak nowej linii. Bo przecież dane
podawane do konwertera nie są nigdzie wypisywane, tak jak w terminalu, więc skąd tam
i po co znak nowej linii? Terminal wstawia znak nowej linii po każdym wywołaniu
pewnie po to, żeby to było czytelne. Ale, czy terminal może wstawiać znak nowej linii
do konwertera, po każdorazowej iteracji mojego programu? Może by to zrobić jakoś
inaczej, niż przez terminal. A może łatwiej będzie napisać od podstaw program w C++.
W 200 GB pliku w formacie .data pierwsze znaki wypisuje mi jako:
1011110111101101110000110011110000011011000011010001
0000111111111001111010110000100000100101001111111110
0110111100010100001110111100011110110110011000000100
0111010110011110100000110100011000101010101000110111
0011101100101101110101000010001011001110000101111000
1100110011101101011110110011110010110110111101011011
1011011111100110110001011101100100011110011101001011
1110111111111110100101111111010011110000010111110000
0101011011111011101000110000110110001010011111000101
0001100111111101111100010011011101111001010100110111
1110110010110010001101111000010101011111000000011010
1010111111000101001011111010010010011000100110110010
1011000000111100111010100000001000011101001001100010
1101011100000101111010010011011111101010101101011100
1011100010010110110111101101010001001110100101010001
1010010011001000100110100101011111000000011000111110
1010010111100010110000011100010100000110001100011111
0110100111110111101011111100011011011011010011111000
1000001001110001001011111001000001010010010110011000
001101001000
Bez żadnych nowych linii. Po uruchomieniu cat mojplik.data | ./Konwerter.exe |
./RNG_test stdin
Nadal dostaję "debug error", "abort() has been called" oraz pełno faili:
[Low1/32]BCFN(2+3,13-8,T) R=+583.2 p = 6.0e-149 FAIL !!!!!
[Low1/32]BCFN(2+4,13-8,T) R=+546.4 p = 1.3e-139 FAIL !!!!!
[Low1/32]BCFN(2+5,13-9,T) R=+621.0 p = 1.2e-140 FAIL !!!!!
[Low1/32]BCFN(2+6,13-9,T) R=+647.6 p = 1.2e-146 FAIL !!!!!
[Low1/32]DC6-9x1Bytes-1 R= +54.5 p = 3.5e-31 FAIL !!!
[Low1/32]FPF-14+6/16:(0,14-4) R= +14.9 p = 4.0e-12 VERY SUSPICIOUS
[Low1/32]FPF-14+6/16:(1,14-5) R= +8.1 p = 1.3e-6 mildly suspicious
[Low1/32]FPF-14+6/16:all R= +19.0 p = 8.5e-16 FAIL !
[Low1/32]FPF-14+6/16:all2 R= +54.4 p = 1.8e-18 FAIL !
[Low1/32]FPF-14+6/16:cross R= +33.2 p = 6.6e-26 FAIL !!
...and 55 test result(s) without anomalies
Swoją drogą to co zwraca funkcja bin() i jest zapisywane do pliku to string, więc
pewnie jest w formacie ASCII.
-
47. Data: 2021-08-22 10:39:54
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "M.M." <m...@g...com>
On Sunday, August 22, 2021 at 5:08:38 AM UTC+2, o...@g...com wrote:
> Jednak tego raczej nie przeskoczę. Print zawsze będzie wypisywał liczbę linijka po
linijce i będzie się tam prawdopodobnie pojawiać znak nowej linii, pomimo, że ja go
nie wstawiam. Nie będzie się pojawiać tylko podczas zapisu do pliku funkcją write. A
wywołanie funkcji bez printa ani write nic nie zrobi i nie poda nigdzie żadnych
liczb. Chyba, że można jakoś podać dane do konwertera bez używania printa.
>
> Ewentualnie może coś jeszcze innego odpowiada za znak nowej linii. Bo przecież dane
podawane do konwertera nie są nigdzie wypisywane, tak jak w terminalu, więc skąd tam
i po co znak nowej linii? Terminal wstawia znak nowej linii po każdym wywołaniu
pewnie po to, żeby to było czytelne. Ale, czy terminal może wstawiać znak nowej linii
do konwertera, po każdorazowej iteracji mojego programu? Może by to zrobić jakoś
inaczej, niż przez terminal. A może łatwiej będzie napisać od podstaw program w C++.
>
> W 200 GB pliku w formacie .data pierwsze znaki wypisuje mi jako:
>
> 1011110111101101110000110011110000011011000011010001
0000111111111001111010110000100000100101001111111110
0110111100010100001110111100011110110110011000000100
0111010110011110100000110100011000101010101000110111
0011101100101101110101000010001011001110000101111000
1100110011101101011110110011110010110110111101011011
1011011111100110110001011101100100011110011101001011
1110111111111110100101111111010011110000010111110000
0101011011111011101000110000110110001010011111000101
0001100111111101111100010011011101111001010100110111
1110110010110010001101111000010101011111000000011010
1010111111000101001011111010010010011000100110110010
1011000000111100111010100000001000011101001001100010
1101011100000101111010010011011111101010101101011100
1011100010010110110111101101010001001110100101010001
1010010011001000100110100101011111000000011000111110
1010010111100010110000011100010100000110001100011111
0110100111110111101011111100011011011011010011111000
1000001001110001001011111001000001010010010110011000
001101001000
>
> Bez żadnych nowych linii. Po uruchomieniu cat mojplik.data | ./Konwerter.exe |
./RNG_test stdin
>
> Nadal dostaję "debug error", "abort() has been called" oraz pełno faili:
Może tam znajdziesz odpowiedź:
https://www.techiedelight.com/how-to-convert-an-inte
ger-to-a-binary-string-in-python/
https://stackoverflow.com/questions/493386/how-to-pr
int-without-a-newline-or-space
>
> [Low1/32]BCFN(2+3,13-8,T) R=+583.2 p = 6.0e-149 FAIL !!!!!
> [Low1/32]BCFN(2+4,13-8,T) R=+546.4 p = 1.3e-139 FAIL !!!!!
> [Low1/32]BCFN(2+5,13-9,T) R=+621.0 p = 1.2e-140 FAIL !!!!!
> [Low1/32]BCFN(2+6,13-9,T) R=+647.6 p = 1.2e-146 FAIL !!!!!
> [Low1/32]DC6-9x1Bytes-1 R= +54.5 p = 3.5e-31 FAIL !!!
> [Low1/32]FPF-14+6/16:(0,14-4) R= +14.9 p = 4.0e-12 VERY SUSPICIOUS
> [Low1/32]FPF-14+6/16:(1,14-5) R= +8.1 p = 1.3e-6 mildly suspicious
> [Low1/32]FPF-14+6/16:all R= +19.0 p = 8.5e-16 FAIL !
> [Low1/32]FPF-14+6/16:all2 R= +54.4 p = 1.8e-18 FAIL !
> [Low1/32]FPF-14+6/16:cross R= +33.2 p = 6.6e-26 FAIL !!
> ...and 55 test result(s) without anomalies
>
> Swoją drogą to co zwraca funkcja bin() i jest zapisywane do pliku to string, więc
pewnie jest w formacie ASCII.
-
48. Data: 2021-08-22 14:01:44
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
niedziela, 22 sierpnia 2021 o 10:39:55 UTC+2 M.M. napisał(a):
> On Sunday, August 22, 2021 at 5:08:38 AM UTC+2, o...@g...com wrote:
> > Jednak tego raczej nie przeskoczę. Print zawsze będzie wypisywał liczbę linijka
po linijce i będzie się tam prawdopodobnie pojawiać znak nowej linii, pomimo, że ja
go nie wstawiam. Nie będzie się pojawiać tylko podczas zapisu do pliku funkcją write.
A wywołanie funkcji bez printa ani write nic nie zrobi i nie poda nigdzie żadnych
liczb. Chyba, że można jakoś podać dane do konwertera bez używania printa.
> >
> > Ewentualnie może coś jeszcze innego odpowiada za znak nowej linii. Bo przecież
dane podawane do konwertera nie są nigdzie wypisywane, tak jak w terminalu, więc skąd
tam i po co znak nowej linii? Terminal wstawia znak nowej linii po każdym wywołaniu
pewnie po to, żeby to było czytelne. Ale, czy terminal może wstawiać znak nowej linii
do konwertera, po każdorazowej iteracji mojego programu? Może by to zrobić jakoś
inaczej, niż przez terminal. A może łatwiej będzie napisać od podstaw program w C++.
> >
> > W 200 GB pliku w formacie .data pierwsze znaki wypisuje mi jako:
> >
> > 1011110111101101110000110011110000011011000011010001
0000111111111001111010110000100000100101001111111110
0110111100010100001110111100011110110110011000000100
0111010110011110100000110100011000101010101000110111
0011101100101101110101000010001011001110000101111000
1100110011101101011110110011110010110110111101011011
1011011111100110110001011101100100011110011101001011
1110111111111110100101111111010011110000010111110000
0101011011111011101000110000110110001010011111000101
0001100111111101111100010011011101111001010100110111
1110110010110010001101111000010101011111000000011010
1010111111000101001011111010010010011000100110110010
1011000000111100111010100000001000011101001001100010
1101011100000101111010010011011111101010101101011100
1011100010010110110111101101010001001110100101010001
1010010011001000100110100101011111000000011000111110
1010010111100010110000011100010100000110001100011111
0110100111110111101011111100011011011011010011111000
1000001001110001001011111001000001010010010110011000
001101001000
> >
> > Bez żadnych nowych linii. Po uruchomieniu cat mojplik.data | ./Konwerter.exe |
./RNG_test stdin
> >
> > Nadal dostaję "debug error", "abort() has been called" oraz pełno faili:
> Może tam znajdziesz odpowiedź:
> https://www.techiedelight.com/how-to-convert-an-inte
ger-to-a-binary-string-in-python/
> https://stackoverflow.com/questions/493386/how-to-pr
int-without-a-newline-or-space
Udało mi się uzupełnić zera w zapisie binarnym i usunąć nowe linie podczas
wywoływania print. Bez konwertera mam nadal dużo faili (bez błędu), z konwerterem
nawet kilka faili więcej i nadal wywala błąd abort().
Wciąż prawdopodobnie jest problem w tym, że funkcje konwersji na format binarny
"converting an integer to a binary string". I mam tam stringi, czyli zera i jedynki z
formacie ASCII.
-
49. Data: 2021-08-22 15:08:24
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
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.
-
50. Data: 2021-08-22 20:59:09
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
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?
Po wygenerowaniu danych do pliku data i wrzuceniu w konwerter terminal wyrzuca
krzaki:
nUI?U 9;?AXe@"^Kev6*m?qdp<1o{
mg}5H&'X%p_TflY~pVjkOKr}zo1FleFc?ybq8\NVd:4[?z~9ueVtl?:ą@T>N6@r(fo?g
41)n$?JIM 6hc%x?j]k<g(<3+3.=<Ymf~;PP|?W%-vu'`oKn2#Qe
gor"a+Ma%v|/?trz>l
p?%l?+uLA{UK~N%dVeT^~?XwUjFxr{`qk??:l}g]<A\8$4D"6@X{gijf$un)ucu?rySnsNhg?2\hpByWh*@???NxoL
lQ?zFD4I.g`4n[C!4*<>:_.v?$]9P;?fPa?WGQ@jsnNL4>5q2G[D?Z{NE!>c`+>XGv[?*1
&
;9N)xj9?L`=h]e?{??$P.?ZiY|F?UU+Nvwn#^R@?Y0 e*u4l9zMjGIC?,
]i<Jq(?4´´hJXztf-h:[^T:,C?4@8~nXI:R&sSceNC
`<+=~w<S#w}SaM^O4?EM?iq-"ElA<eX
?beK94a}?6A*
Czyli wygląda na to, że działa poprawnie. 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)
Dla większych niż 1 GB otrzymuję wciąż dużo faili i standardowy komunikat "abort()":
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
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ę?