-
21. Data: 2021-08-21 17:51:17
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
Co ma zwracać mój program? Bo generator:
> //Dla 128 bitów
> return ( next = (prev * a + b) ) >> 96;
>
> //Dla 64 bitów
> return ( next = (prev * a + b) ) >> 32;
>
Nie zwraca bitu po bicie. Nie będzie zwracał nawet liczb w postaci binarnej, tylko
dziesiętnej.
-
22. Data: 2021-08-21 18:30:35
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "M.M." <m...@g...com>
On Saturday, August 21, 2021 at 5:51:18 PM UTC+2, o...@g...com wrote:
> Co ma zwracać mój program? Bo generator:
> > //Dla 128 bitów
> > return ( next = (prev * a + b) ) >> 96;
> >
> > //Dla 64 bitów
> > return ( next = (prev * a + b) ) >> 32;
> >
> Nie zwraca bitu po bicie. Nie będzie zwracał nawet liczb w postaci binarnej, tylko
dziesiętnej.
Trzeba zamienić na bity, potem na ascii i potem można przetestować konwerter - co
robi ten program:
https://github.com/mmarszik/SimpPRNG/blob/main/main.
cpp
Pozdrawiam
-
23. Data: 2021-08-21 19:16:12
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
A czy mój generator może być napisany w Pythonie? I czy pojedyncze wywołanie
generatora ma dawać pojedynczy bit, czy może dawać np. liczbę 128-bitową zapisaną
binarnie "01010101...11110101"? Jak bity zamienić na ascii?
-
24. Data: 2021-08-21 21:24:24
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
Mam w tej chwili funkcję w Pythonie, która zwraca kolejno liczby 128-bitowe:
192066077656580258942348540382114420378
32279351617202730688729077252496792396
297915430637496012930348761181422042536
159283604400744055638172460588895391056
220821713004509824228660973423179477929
265401964602247200657488762091495142036
121949887341620150952131667637044765657
Mogę ją wywołać zadeklarowaną liczbę razy. Mogę to też przekształcić na bity:
1001000001111110100101001011111000011110011000110111
0000110101100001110110000100111010001001101001010101
000001110001011010011010
1100001001000110001101110100010010110010011000101000
1101110111011010001010101110100010101010010011011111
000111001101101001100
1110000000100000011011001100010010101100000010101111
1010111000111011010101011010100111000001100110011010
111000110011110110101000
1110111110101001110100000000101101010111100010110011
0100100001100000011001001010001001010101111010100100
11101010100110101010000
1010011000100000101101110000011010011100011011110101
0000010011001010010010100110000011000110010000110011
101001100011001110101001
1100011110101010100011110010000010110010011011111100
1110101100100001111101011001100001010000000111000110
111000101011001010010100
1011011101111101011000110101000010100011000111000010
0100111101010011101111000110010011011110100010100000
00101111110001111011001
I pewnie dam radę to pociąć na pojedyncze bity. Tak, żeby wypisywać:
1
0
0
1
0
0
0
Z każdym powtórzeniem. Mam nadzieję, że ten konwerter nie musi sam wywoływać programu
n razy, tylko wystarczy, że program wywołany raz wygeneruje strumień bitów.
-
25. Data: 2021-08-21 21:48:48
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "M.M." <m...@g...com>
On Saturday, August 21, 2021 at 9:24:25 PM UTC+2, o...@g...com wrote:
> Mam w tej chwili funkcję w Pythonie, która zwraca kolejno liczby 128-bitowe:
>
> 192066077656580258942348540382114420378
> 32279351617202730688729077252496792396
> 297915430637496012930348761181422042536
> 159283604400744055638172460588895391056
> 220821713004509824228660973423179477929
> 265401964602247200657488762091495142036
> 121949887341620150952131667637044765657
>
> Mogę ją wywołać zadeklarowaną liczbę razy. Mogę to też przekształcić na bity:
>
> 1001000001111110100101001011111000011110011000110111
0000110101100001110110000100111010001001101001010101
000001110001011010011010
> 1100001001000110001101110100010010110010011000101000
1101110111011010001010101110100010101010010011011111
000111001101101001100
> 1110000000100000011011001100010010101100000010101111
1010111000111011010101011010100111000001100110011010
111000110011110110101000
> 1110111110101001110100000000101101010111100010110011
0100100001100000011001001010001001010101111010100100
11101010100110101010000
> 1010011000100000101101110000011010011100011011110101
0000010011001010010010100110000011000110010000110011
101001100011001110101001
> 1100011110101010100011110010000010110010011011111100
1110101100100001111101011001100001010000000111000110
111000101011001010010100
> 1011011101111101011000110101000010100011000111000010
0100111101010011101111000110010011011110100010100000
00101111110001111011001
>
> I pewnie dam radę to pociąć na pojedyncze bity. Tak, żeby wypisywać:
>
> 1
> 0
> 0
> 1
> 0
> 0
> 0
>
> Z każdym powtórzeniem. Mam nadzieję, że ten konwerter nie musi sam wywoływać
programu n razy, tylko wystarczy, że program wywołany raz wygeneruje strumień bitów.
Poniższe polecenie shell raz uruchamia konwerter, a konwerter działa do póki może
czytać i pisać ze standardowego wejścia/wyjścia.
./Generator | ./Konwerter | ./Tester
Konwerter czyta zera i jedynki w formacie ASCII, nie toleruje żadnych innych znaków
(spacji, enterów, etc).
Pozdrawiam
-
26. Data: 2021-08-21 21:57:25
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "M.M." <m...@g...com>
On Saturday, August 21, 2021 at 7:16:13 PM UTC+2, o...@g...com wrote:
> A czy mój generator może być napisany w Pythonie? I czy pojedyncze wywołanie
generatora ma dawać pojedynczy bit, czy może dawać np. liczbę 128-bitową zapisaną
binarnie "01010101...11110101"? Jak bity zamienić na ascii?
Zrozumiałem, że masz gotowy program (plik) co generuje ciąg zer i jedynek w formacie
tekstowym
(innymi słowy w formacie ASCII). Obojętnie skąd pochodzą te zera i jedynki -
konwerter zadziała i
w dodatku powinien zadziałać poprawnie, bo przeszedł jeden test. Program może być
napisany w
czymkolwiek, w Pythonie, w Javie, w C++, albo możesz odczytać do konwertera dane z
pliku przy
pomocy polecenia bash/shell:
cat plik_tekstowy_zer_i_jedynek.txt | ./konwerter | ./tester
Tylko plik musi być duży żeby to miało sens, np. cały duży dysk 1-100TB.
Lepiej dać prosto z programu, bez zapisywania do pliku:
./Twój_program | ./konwerter | ./tester
-
27. Data: 2021-08-21 22:55:34
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
sobota, 21 sierpnia 2021 o 21:57:26 UTC+2 M.M. napisał(a):
> On Saturday, August 21, 2021 at 7:16:13 PM UTC+2, o...@g...com wrote:
> > A czy mój generator może być napisany w Pythonie? I czy pojedyncze wywołanie
generatora ma dawać pojedynczy bit, czy może dawać np. liczbę 128-bitową zapisaną
binarnie "01010101...11110101"? Jak bity zamienić na ascii?
> Zrozumiałem, że masz gotowy program (plik) co generuje ciąg zer i jedynek w
formacie tekstowym
> (innymi słowy w formacie ASCII).
Tak. Czy program ma wypisywać te zera i jedynki za pomocą printa, czy po prostu
wywołanie funkcji ma je generować, a print nie jest potrzebny? I czy muszę to ciąć
tak, żeby program wypisywał:
1
0
0
1
Czy może wypisywać liczba po liczbie w formacie binarnym:
1001000001111110100101001011111000011110011000110111
0000110101100001110110000100111010001001101001010101
000001110001011010011010
1100001001000110001101110100010010110010011000101000
1101110111011010001010101110100010101010010011011111
000111001101101001100
1110000000100000011011001100010010101100000010101111
1010111000111011010101011010100111000001100110011010
111000110011110110101000
1110111110101001110100000000101101010111100010110011
0100100001100000011001001010001001010101111010100100
11101010100110101010000
Po uruchomieniu komendy:
Mojgenerator.py | ./Konwerter.exe | ./RNG_test stdin
Dostaję komunikat:
"Mojgenerator.py: command not found
RNG_test using PractRand version 0.93
RNG = RNG_stdin, seed = 0xe345c308
test set = normal, folding = standard(unknown format)
Segmentation fault (core dumped)"
Niezależnie, czy wpiszę Mojgenerator, Mojgenerator.py, czy Mojgenerator.exe.
-
28. Data: 2021-08-21 22:58:45
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com>
PS Gdy program wypisuje:
1001000001111110100101001011111000011110011000110111
0000110101100001110110000100111010001001101001010101
000001110001011010011010
1100001001000110001101110100010010110010011000101000
1101110111011010001010101110100010101010010011011111
000111001101101001100
1110000000100000011011001100010010101100000010101111
1010111000111011010101011010100111000001100110011010
111000110011110110101000
1110111110101001110100000000101101010111100010110011
0100100001100000011001001010001001010101111010100100
11101010100110101010000
tak naprawdę nie ma nigdzie żadnego znaku nowej linii, czy wiersza.
-
29. Data: 2021-08-21 23:22:32
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "M.M." <m...@g...com>
On Saturday, August 21, 2021 at 10:58:46 PM UTC+2, o...@g...com wrote:
> PS Gdy program wypisuje:
>
> 1001000001111110100101001011111000011110011000110111
0000110101100001110110000100111010001001101001010101
000001110001011010011010
> 1100001001000110001101110100010010110010011000101000
1101110111011010001010101110100010101010010011011111
000111001101101001100
> 1110000000100000011011001100010010101100000010101111
1010111000111011010101011010100111000001100110011010
111000110011110110101000
> 1110111110101001110100000000101101010111100010110011
0100100001100000011001001010001001010101111010100100
11101010100110101010000
>
> tak naprawdę nie ma nigdzie żadnego znaku nowej linii, czy wiersza.
To powinno zadziałać.
-
30. Data: 2021-08-21 23:31:13
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "M.M." <m...@g...com>
On Saturday, August 21, 2021 at 10:55:35 PM UTC+2, o...@g...com wrote:
> sobota, 21 sierpnia 2021 o 21:57:26 UTC+2 M.M. napisał(a):
> > On Saturday, August 21, 2021 at 7:16:13 PM UTC+2, o...@g...com wrote:
> > > A czy mój generator może być napisany w Pythonie? I czy pojedyncze wywołanie
generatora ma dawać pojedynczy bit, czy może dawać np. liczbę 128-bitową zapisaną
binarnie "01010101...11110101"? Jak bity zamienić na ascii?
> > Zrozumiałem, że masz gotowy program (plik) co generuje ciąg zer i jedynek w
formacie tekstowym
> > (innymi słowy w formacie ASCII).
> Tak. Czy program ma wypisywać te zera i jedynki za pomocą printa, czy po prostu
wywołanie funkcji ma je generować, a print nie jest potrzebny? I czy muszę to ciąć
tak, żeby program wypisywał:
> 1
> 0
> 0
> 1
Rozmawialiśmy kilka postów wcześniej w ten sposób:
[
> > Teraz nie mogę, potem dam kod program który przekonwertuje plik tekstowy do
binarnego. Proszę, pokaż ( i jeśli trzeba to opisz )
> > jak wygląda oryginalny plik tekstowy.
> Jeżeli zapisuję dane to pliku .txt, to wygląda to tak:
> "010101010101000101111010101010101110100101111101011
0111110...010101010101010100101010101010010101010101
00101010101011111"
> Po prostu pseudolosowy ciąg zer i jedynek, nic więcej.
]
Więc konwerter takie dane umie odczytać i zamienia je na format binarny dla
PractRand. To co zapisujesz do pliku, po prostu
wyświetl teraz na konsolę (a nie do pliku). Konwerter to odczyta z konsoli i poda
dalej do PractRand. Tylko trzeba te trzy
programy połączyć komendą shell:
TwójProgram | Konwerter | PractRand
> Czy może wypisywać liczba po liczbie w formacie binarnym:
Jeśli w formacie binarnym, to nie jest potrzebny żaden konwerter. Wystarczy użyć
TwójProgram | PractRand
>
> 1001000001111110100101001011111000011110011000110111
0000110101100001110110000100111010001001101001010101
000001110001011010011010
> 1100001001000110001101110100010010110010011000101000
1101110111011010001010101110100010101010010011011111
000111001101101001100
> 1110000000100000011011001100010010101100000010101111
1010111000111011010101011010100111000001100110011010
111000110011110110101000
> 1110111110101001110100000000101101010111100010110011
0100100001100000011001001010001001010101111010100100
11101010100110101010000
>
> Po uruchomieniu komendy:
>
> Mojgenerator.py | ./Konwerter.exe | ./RNG_test stdin
>
> Dostaję komunikat:
>
> "Mojgenerator.py: command not found
> RNG_test using PractRand version 0.93
> RNG = RNG_stdin, seed = 0xe345c308
> test set = normal, folding = standard(unknown format)
>
> Segmentation fault (core dumped)"
>
> Niezależnie, czy wpiszę Mojgenerator, Mojgenerator.py, czy Mojgenerator.exe.
Konwerter się wywali jeśli dostanie na wejście cokolwiek innego niż znak ASCII '0'
lub '1'.
Pozdrawiam


do góry
Dlaczego nowe mieszkania są coraz mniejsze? Dane GUS pokazują prawdziwy powód