eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJak zrobić test za pomocą PractRand? › Re: Jak zrobić test za pomocą PractRand?
  • Data: 2021-08-23 14:31:38
    Temat: Re: Jak zrobić test za pomocą PractRand?
    Od: "o...@g...com" <o...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    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?





Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: