eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJak zrobić test za pomocą PractRand?
Ilość wypowiedzi w tym wątku: 87

  • 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

strony : 1 . 2 . [ 3 ] . 4 ... 9


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: