eGospodarka.pl
eGospodarka.pl poleca

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

  • 61. Data: 2021-08-23 15:05:26
    Temat: Re: Jak zrobić test za pomocą PractRand?
    Od: "M.M." <m...@g...com>

    On Monday, August 23, 2021 at 2:31:39 PM UTC+2, o...@g...com wrote:
    > 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?

    Jeśli nie ma błędów, to w tym przypadku nie można uzyskać innych wyników. Jeśli nie
    pomijam 100 początkowych
    wygenerowanych liczb, to mam takie same liczby jak Ty:

    0
    0
    0
    31
    21
    4
    3
    9
    9
    7
    25
    12
    15
    16
    24
    11
    20
    14
    25
    27

    Jeśli pomijam to mam takie:

    3
    29
    24
    7
    24
    11
    15
    18
    22
    24
    17
    7
    15
    0
    28
    19
    8
    27
    31
    0

    W wielu generatorach początkowe liczby uznawane są za kiepskie. Jeśli to jest ważne,
    pomija
    się wiele początkowych liczb. Ten generator jest tylko do minimalnego sprawdzenia,
    ale jakoś
    odruchowo pominąłem chociaż 100 początkowych liczb. Generalnie, pobieranie co N-tego
    bitu to
    najprostsza technika zwiększająca jakość generatora - ale spowalniająca generator.


  • 62. Data: 2021-08-23 15:21:46
    Temat: Re: Jak zrobić test za pomocą PractRand?
    Od: "o...@g...com" <o...@g...com>

    poniedziałek, 23 sierpnia 2021 o 15:05:27 UTC+2 M.M. napisał(a):
    > On Monday, August 23, 2021 at 2:31:39 PM UTC+2, o...@g...com wrote:
    > > 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?
    > Jeśli nie ma błędów, to w tym przypadku nie można uzyskać innych wyników. Jeśli nie
    pomijam 100 początkowych
    > wygenerowanych liczb, to mam takie same liczby jak Ty:
    > 0
    > 0
    > 0
    > 31
    > 21
    > 4
    > 3
    > 9
    > 9
    > 7
    > 25
    > 12
    > 15
    > 16
    > 24
    > 11
    > 20
    > 14
    > 25
    > 27
    >
    > Jeśli pomijam to mam takie:
    >
    > 3
    > 29
    > 24
    > 7
    > 24
    > 11
    > 15
    > 18
    > 22
    > 24
    > 17
    > 7
    > 15
    > 0
    > 28
    > 19
    > 8
    > 27
    > 31
    > 0
    >
    > W wielu generatorach początkowe liczby uznawane są za kiepskie. Jeśli to jest
    ważne, pomija
    > się wiele początkowych liczb. Ten generator jest tylko do minimalnego sprawdzenia,
    ale jakoś
    > odruchowo pominąłem chociaż 100 początkowych liczb. Generalnie, pobieranie co
    N-tego bitu to
    > najprostsza technika zwiększająca jakość generatora - ale spowalniająca generator.

    Wychodzi nam to samo, myślałem, że pominąłem pierwsze 500 bitów, a pominąłeś 100.
    Oczywiście zdaję sobie sprawę z tych słabości początkowych bitów, sam projektowałem
    moje generatory, żeby unikać podobnych problemów. Niemniej mam przekonanie, że nawet
    bez pominięcia pierwszych bitów ten generator też dobrze by sobie poradził.

    Ale mniejsza z tym. Mamy te same generatory i ewidentnie problem jest z formatem
    danych.


  • 63. Data: 2021-08-23 15:58:44
    Temat: Re: Jak zrobić test za pomocą PractRand?
    Od: "M.M." <m...@g...com>

    On Monday, August 23, 2021 at 3:21:47 PM UTC+2, o...@g...com wrote:
    > poniedziałek, 23 sierpnia 2021 o 15:05:27 UTC+2 M.M. napisał(a):
    > > On Monday, August 23, 2021 at 2:31:39 PM UTC+2, o...@g...com wrote:
    > > > 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?
    > > Jeśli nie ma błędów, to w tym przypadku nie można uzyskać innych wyników. Jeśli
    nie pomijam 100 początkowych
    > > wygenerowanych liczb, to mam takie same liczby jak Ty:
    > > 0
    > > 0
    > > 0
    > > 31
    > > 21
    > > 4
    > > 3
    > > 9
    > > 9
    > > 7
    > > 25
    > > 12
    > > 15
    > > 16
    > > 24
    > > 11
    > > 20
    > > 14
    > > 25
    > > 27
    > >
    > > Jeśli pomijam to mam takie:
    > >
    > > 3
    > > 29
    > > 24
    > > 7
    > > 24
    > > 11
    > > 15
    > > 18
    > > 22
    > > 24
    > > 17
    > > 7
    > > 15
    > > 0
    > > 28
    > > 19
    > > 8
    > > 27
    > > 31
    > > 0
    > >
    > > W wielu generatorach początkowe liczby uznawane są za kiepskie. Jeśli to jest
    ważne, pomija
    > > się wiele początkowych liczb. Ten generator jest tylko do minimalnego
    sprawdzenia, ale jakoś
    > > odruchowo pominąłem chociaż 100 początkowych liczb. Generalnie, pobieranie co
    N-tego bitu to
    > > najprostsza technika zwiększająca jakość generatora - ale spowalniająca
    generator.
    > Wychodzi nam to samo, myślałem, że pominąłem pierwsze 500 bitów, a pominąłeś 100.
    Oczywiście zdaję sobie sprawę z tych słabości początkowych bitów, sam projektowałem
    moje generatory, żeby unikać podobnych problemów. Niemniej mam przekonanie, że nawet
    bez pominięcia pierwszych bitów ten generator też dobrze by sobie poradził.
    >
    > Ale mniejsza z tym. Mamy te same generatory i ewidentnie problem jest z formatem
    danych.

    Super, zawęziłeś obszar w którym jest problem :)

    Pozdrawiam


  • 64. Data: 2021-08-23 21:11:12
    Temat: Re: Jak zrobić test za pomocą PractRand?
    Od: "o...@g...com" <o...@g...com>

    poniedziałek, 23 sierpnia 2021 o 15:58:45 UTC+2 M.M. napisał(a):
    > On Monday, August 23, 2021 at 3:21:47 PM UTC+2, o...@g...com wrote:
    > > poniedziałek, 23 sierpnia 2021 o 15:05:27 UTC+2 M.M. napisał(a):
    > > > On Monday, August 23, 2021 at 2:31:39 PM UTC+2, o...@g...com wrote:
    > > > > 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?
    > > > Jeśli nie ma błędów, to w tym przypadku nie można uzyskać innych wyników. Jeśli
    nie pomijam 100 początkowych
    > > > wygenerowanych liczb, to mam takie same liczby jak Ty:
    > > > 0
    > > > 0
    > > > 0
    > > > 31
    > > > 21
    > > > 4
    > > > 3
    > > > 9
    > > > 9
    > > > 7
    > > > 25
    > > > 12
    > > > 15
    > > > 16
    > > > 24
    > > > 11
    > > > 20
    > > > 14
    > > > 25
    > > > 27
    > > >
    > > > Jeśli pomijam to mam takie:
    > > >
    > > > 3
    > > > 29
    > > > 24
    > > > 7
    > > > 24
    > > > 11
    > > > 15
    > > > 18
    > > > 22
    > > > 24
    > > > 17
    > > > 7
    > > > 15
    > > > 0
    > > > 28
    > > > 19
    > > > 8
    > > > 27
    > > > 31
    > > > 0
    > > >
    > > > W wielu generatorach początkowe liczby uznawane są za kiepskie. Jeśli to jest
    ważne, pomija
    > > > się wiele początkowych liczb. Ten generator jest tylko do minimalnego
    sprawdzenia, ale jakoś
    > > > odruchowo pominąłem chociaż 100 początkowych liczb. Generalnie, pobieranie co
    N-tego bitu to
    > > > najprostsza technika zwiększająca jakość generatora - ale spowalniająca
    generator.
    > > Wychodzi nam to samo, myślałem, że pominąłem pierwsze 500 bitów, a pominąłeś 100.
    Oczywiście zdaję sobie sprawę z tych słabości początkowych bitów, sam projektowałem
    moje generatory, żeby unikać podobnych problemów. Niemniej mam przekonanie, że nawet
    bez pominięcia pierwszych bitów ten generator też dobrze by sobie poradził.
    > >
    > > Ale mniejsza z tym. Mamy te same generatory i ewidentnie problem jest z formatem
    danych.
    > Super, zawęziłeś obszar w którym jest problem :)
    >
    > Pozdrawiam

    Czy możesz mi powiedzieć co konkretnie robisz z uzyskaną liczbą w formacie
    dziesiętnym w C++, że zamieniasz ją na format binarny (ten właściwy format, nie
    stringa binarnego jak w Pythonie). Spróbuję popytać i znaleźć tego odpowiednik w
    Pythonie.


  • 65. Data: 2021-08-23 22:29:44
    Temat: Re: Jak zrobić test za pomocą PractRand?
    Od: "M.M." <m...@g...com>

    On Monday, August 23, 2021 at 9:11:14 PM UTC+2, o...@g...com wrote:
    > poniedziałek, 23 sierpnia 2021 o 15:58:45 UTC+2 M.M. napisał(a):
    > > On Monday, August 23, 2021 at 3:21:47 PM UTC+2, o...@g...com wrote:
    > > > poniedziałek, 23 sierpnia 2021 o 15:05:27 UTC+2 M.M. napisał(a):
    > > > > On Monday, August 23, 2021 at 2:31:39 PM UTC+2, o...@g...com wrote:
    > > > > > 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?
    > > > > Jeśli nie ma błędów, to w tym przypadku nie można uzyskać innych wyników.
    Jeśli nie pomijam 100 początkowych
    > > > > wygenerowanych liczb, to mam takie same liczby jak Ty:
    > > > > 0
    > > > > 0
    > > > > 0
    > > > > 31
    > > > > 21
    > > > > 4
    > > > > 3
    > > > > 9
    > > > > 9
    > > > > 7
    > > > > 25
    > > > > 12
    > > > > 15
    > > > > 16
    > > > > 24
    > > > > 11
    > > > > 20
    > > > > 14
    > > > > 25
    > > > > 27
    > > > >
    > > > > Jeśli pomijam to mam takie:
    > > > >
    > > > > 3
    > > > > 29
    > > > > 24
    > > > > 7
    > > > > 24
    > > > > 11
    > > > > 15
    > > > > 18
    > > > > 22
    > > > > 24
    > > > > 17
    > > > > 7
    > > > > 15
    > > > > 0
    > > > > 28
    > > > > 19
    > > > > 8
    > > > > 27
    > > > > 31
    > > > > 0
    > > > >
    > > > > W wielu generatorach początkowe liczby uznawane są za kiepskie. Jeśli to jest
    ważne, pomija
    > > > > się wiele początkowych liczb. Ten generator jest tylko do minimalnego
    sprawdzenia, ale jakoś
    > > > > odruchowo pominąłem chociaż 100 początkowych liczb. Generalnie, pobieranie co
    N-tego bitu to
    > > > > najprostsza technika zwiększająca jakość generatora - ale spowalniająca
    generator.
    > > > Wychodzi nam to samo, myślałem, że pominąłem pierwsze 500 bitów, a pominąłeś
    100. Oczywiście zdaję sobie sprawę z tych słabości początkowych bitów, sam
    projektowałem moje generatory, żeby unikać podobnych problemów. Niemniej mam
    przekonanie, że nawet bez pominięcia pierwszych bitów ten generator też dobrze by
    sobie poradził.
    > > >
    > > > Ale mniejsza z tym. Mamy te same generatory i ewidentnie problem jest z
    formatem danych.
    > > Super, zawęziłeś obszar w którym jest problem :)
    > >
    > > Pozdrawiam
    > Czy możesz mi powiedzieć co konkretnie robisz z uzyskaną liczbą w formacie
    dziesiętnym w C++, że zamieniasz ją na format binarny (ten właściwy format, nie
    stringa binarnego jak w Pythonie). Spróbuję popytać i znaleźć tego odpowiednik w
    Pythonie.

    Nie wiem jak mogę pomóc i trochę się gubię kiedy jaki dokładnie format masz na myśli
    :)

    Zobacz, poniżej jest format binarny, bo ma same zera i jedynki:
    01010111010101001001010
    Ale przecież czytasz to jako tekst, więc może to jest format tekstowy? ;-)

    Może tego szukasz:

    https://stackoverflow.com/questions/908331/how-to-wr
    ite-binary-data-to-stdout-in-python-3

    import sys
    sys.stdout.buffer.write(b"some binary data")

    Pozdrawiam


  • 66. Data: 2021-08-23 22:47:21
    Temat: Re: Jak zrobić test za pomocą PractRand?
    Od: "o...@g...com" <o...@g...com>

    poniedziałek, 23 sierpnia 2021 o 22:29:45 UTC+2 M.M. napisał(a):
    > On Monday, August 23, 2021 at 9:11:14 PM UTC+2, o...@g...com wrote:
    > > poniedziałek, 23 sierpnia 2021 o 15:58:45 UTC+2 M.M. napisał(a):
    > > > On Monday, August 23, 2021 at 3:21:47 PM UTC+2, o...@g...com wrote:
    > > > > poniedziałek, 23 sierpnia 2021 o 15:05:27 UTC+2 M.M. napisał(a):
    > > > > > On Monday, August 23, 2021 at 2:31:39 PM UTC+2, o...@g...com wrote:
    > > > > > > 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?
    > > > > > Jeśli nie ma błędów, to w tym przypadku nie można uzyskać innych wyników.
    Jeśli nie pomijam 100 początkowych
    > > > > > wygenerowanych liczb, to mam takie same liczby jak Ty:
    > > > > > 0
    > > > > > 0
    > > > > > 0
    > > > > > 31
    > > > > > 21
    > > > > > 4
    > > > > > 3
    > > > > > 9
    > > > > > 9
    > > > > > 7
    > > > > > 25
    > > > > > 12
    > > > > > 15
    > > > > > 16
    > > > > > 24
    > > > > > 11
    > > > > > 20
    > > > > > 14
    > > > > > 25
    > > > > > 27
    > > > > >
    > > > > > Jeśli pomijam to mam takie:
    > > > > >
    > > > > > 3
    > > > > > 29
    > > > > > 24
    > > > > > 7
    > > > > > 24
    > > > > > 11
    > > > > > 15
    > > > > > 18
    > > > > > 22
    > > > > > 24
    > > > > > 17
    > > > > > 7
    > > > > > 15
    > > > > > 0
    > > > > > 28
    > > > > > 19
    > > > > > 8
    > > > > > 27
    > > > > > 31
    > > > > > 0
    > > > > >
    > > > > > W wielu generatorach początkowe liczby uznawane są za kiepskie. Jeśli to
    jest ważne, pomija
    > > > > > się wiele początkowych liczb. Ten generator jest tylko do minimalnego
    sprawdzenia, ale jakoś
    > > > > > odruchowo pominąłem chociaż 100 początkowych liczb. Generalnie, pobieranie
    co N-tego bitu to
    > > > > > najprostsza technika zwiększająca jakość generatora - ale spowalniająca
    generator.
    > > > > Wychodzi nam to samo, myślałem, że pominąłem pierwsze 500 bitów, a pominąłeś
    100. Oczywiście zdaję sobie sprawę z tych słabości początkowych bitów, sam
    projektowałem moje generatory, żeby unikać podobnych problemów. Niemniej mam
    przekonanie, że nawet bez pominięcia pierwszych bitów ten generator też dobrze by
    sobie poradził.
    > > > >
    > > > > Ale mniejsza z tym. Mamy te same generatory i ewidentnie problem jest z
    formatem danych.
    > > > Super, zawęziłeś obszar w którym jest problem :)
    > > >
    > > > Pozdrawiam
    > > Czy możesz mi powiedzieć co konkretnie robisz z uzyskaną liczbą w formacie
    dziesiętnym w C++, że zamieniasz ją na format binarny (ten właściwy format, nie
    stringa binarnego jak w Pythonie). Spróbuję popytać i znaleźć tego odpowiednik w
    Pythonie.
    > Nie wiem jak mogę pomóc i trochę się gubię kiedy jaki dokładnie format masz na
    myśli :)
    >
    > Zobacz, poniżej jest format binarny, bo ma same zera i jedynki:
    > 01010111010101001001010
    > Ale przecież czytasz to jako tekst, więc może to jest format tekstowy? ;-)

    Ja sam już nie wiem co to jest. To jest oczywiście format binarny, ale jak się to
    wypisuje, to są to ostatecznie znaki ASCII. Więc w bitach, to nie będzie ten sam
    ciąg, pomimo, że to nie jest ostatecznie ciąg bitów, tylko zer i jedynek w ASCII.

    > Może tego szukasz:
    >
    > https://stackoverflow.com/questions/908331/how-to-wr
    ite-binary-data-to-stdout-in-python-3
    >
    > import sys
    > sys.stdout.buffer.write(b"some binary data")

    Dzisiaj to testowałem. Próbowałem:

    sys.stdout.buffer.write(b"binary")

    gdzie binary to moja liczba zapisana binarnie za pomocą:

    split=[(w >> x) & 0xFFFFFFFF for x in reversed(range(0, 128, 32))]

    binary = struct.pack('qqqq', split[0], split[1], split[2], split[3])

    Ale to skutkuje tylko wypisaniem:

    binarybinarybinarybinarybinarybinarybinarybinarybina
    rybinarybinarybinarybinarybinarybinarybinarybinarybi
    narybinarybinarybinarybinarybinarybinarybinarybinary
    binarybinarybinarybinarybinarybinarybinarybinarybina
    rybinarybinarybinarybinarybinarybinarybinarybinarybi
    narybinarybinarybinarybinarybinarybinarybinarybinary
    binarybinarybinarybinarybinarybinarybinarybinarybina
    rybinarybinarybinarybinarybinarybinarybinarybinarybi
    narybinarybinarybinarybinarybinary

    Natomiast sys.stdout.buffer.write(binary) nie działa, oblewa testy jak zwykle.


  • 67. Data: 2021-08-23 23:06:00
    Temat: Re: Jak zrobić test za pomocą PractRand?
    Od: "o...@g...com" <o...@g...com>

    PS Na pewno ładuję do sys.stdout.buffer.write() bajty albo "bytes-like objects", bo,
    gdy próbuję tam umieścić zwykłe binary, typu binary = 101010101111, to dostaję błąd:

    TypeError: a bytes-like object is required, not 'str'

    Więc cokolwiek to znaczy, do sys.stdout.buffer.write() trafiają "bytes-like objects".


  • 68. Data: 2021-08-23 23:46:49
    Temat: Re: Jak zrobić test za pomocą PractRand?
    Od: "M.M." <m...@g...com>

    On Monday, August 23, 2021 at 11:19:41 PM UTC+2, o...@g...com wrote:
    > Widzę jeszcze możliwość problemu z tym jak pociąłem liczby 128-bitowe:
    > split=[(w >> x) & 0xFFFFFFFF for x in reversed(range(0, 128, 32))]
    >
    > binary = struct.pack('qqqq', split[0], split[1], split[2], split[3])
    > Pociąłem je na liczby 32 bitowe i w strukt.pack użyłem formatu C Type nazwanego
    'q', który oznacza long long:
    >
    > https://docs.python.org/3/library/struct.html
    >
    > Jeżeli long long może być dłuższy niż to co tam umieszczam, struct.pack może
    wypełniać resztę np. zerami. Ale long long ma chyba właśnie 32-bity.

    Nie wiem, to może tam Ciebie coś zainspiruje:

    https://stackoverflow.com/questions/4670350/how-do-i
    -write-a-long-integer-as-binary-in-python

    Pozdrawiam


  • 69. Data: 2021-08-24 00:27:34
    Temat: Re: Jak zrobić test za pomocą PractRand?
    Od: "o...@g...com" <o...@g...com>

    poniedziałek, 23 sierpnia 2021 o 23:46:50 UTC+2 M.M. napisał(a):
    > On Monday, August 23, 2021 at 11:19:41 PM UTC+2, o...@g...com wrote:
    > > Widzę jeszcze możliwość problemu z tym jak pociąłem liczby 128-bitowe:
    > > split=[(w >> x) & 0xFFFFFFFF for x in reversed(range(0, 128, 32))]
    > >
    > > binary = struct.pack('qqqq', split[0], split[1], split[2], split[3])
    > > Pociąłem je na liczby 32 bitowe i w strukt.pack użyłem formatu C Type nazwanego
    'q', który oznacza long long:
    > >
    > > https://docs.python.org/3/library/struct.html
    > >
    > > Jeżeli long long może być dłuższy niż to co tam umieszczam, struct.pack może
    wypełniać resztę np. zerami. Ale long long ma chyba właśnie 32-bity.
    > Nie wiem, to może tam Ciebie coś zainspiruje:
    >
    > https://stackoverflow.com/questions/4670350/how-do-i
    -write-a-long-integer-as-binary-in-python
    >
    > Pozdrawiam

    Mam błąd:

    "ModuleNotFoundError: No module named 'bitarray'"

    którego nie da się rozwiązać. Zainstalowałem bitarray i dalej mam ten problem. Google
    nie ma to więcej rozwiązań.


  • 70. Data: 2021-08-24 00:54:56
    Temat: Re: Jak zrobić test za pomocą PractRand?
    Od: "o...@g...com" <o...@g...com>

    Inna metoda z tego wątku:

    def binify(x):
    h = hex(x)[2:].rstrip('L')
    return binascii.unhexlify('0'*(32-len(h))+h)

    Też nie działa.

strony : 1 ... 6 . [ 7 ] . 8 . 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: