eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJak zrobić test za pomocą PractRand?Re: Jak zrobić test za pomocą PractRand?
  • Data: 2021-08-20 17:09:26
    Temat: Re: Jak zrobić test za pomocą PractRand?
    Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Friday, August 20, 2021 at 4:53:25 PM UTC+2, o...@g...com wrote:
    > piątek, 20 sierpnia 2021 o 15:04:14 UTC+2 M.M. napisał(a):
    > > On Thursday, August 19, 2021 at 6:15:26 PM UTC+2, o...@g...com wrote:
    > > > Czy ktoś z Was robił testy generatorów liczb pseudolosowych za pomocą
    PractRand?
    > > Jeśli chce Ci się czytać C++ to możesz zobaczyć jak ja to zrobiłem:
    > >
    > > https://github.com/mmarszik/MRndCPP
    > >
    > > https://github.com/mmarszik/MRndCPP/blob/master/test
    s/test.sh
    > > { time ./$prog | ./../../PractRand/RNG_test stdin -singlethreaded -tlmax 360000s
    > $test; } 2> $time
    > >
    > > https://github.com/mmarszik/MRndCPP/blob/master/test
    01.cpp
    > > fwrite( buf, 1, sizeof(buf), stdout );
    > Nic z tego nie rozumiem, ani nawet nie wiem od czego zacząć. Co robi Twój kod? Bo
    podstawowe pytanie jakie mam to co ma zwracać program do PractRand? Domyślam się, że
    ma generować bit po bicie, czyli pojedyncze wywołanie powinno generować jeden
    psudolosowy bit.
    > > > Nie wiem właściwie nic o C++, znam podstawy programowania w Pythonie, więc może
    coś robię źle? Niemniej, kod mojego generatora w C++ jakoś sobie prędzej, czy później
    napiszę, choć liczyłem, że będzie można użyć pliku txt z wygenerowanymi już liczbami.
    Najważniejsze jest dla mnie jak to uruchomić.
    > > Słyszałem że temat generowania liczb pseudo-losowych jest bardzo trudny :/
    > Moje generatory zdają wszystkie testy Dieharder, szukam więc czegoś bardziej
    wymagającego. Także mam już generatory, które działają, zresztą generatorów, które
    istnieją i można modyfikować na wiele sposobów również jest pod dostatkiem. Co do
    zasady jest to trudne i trzeba wiedzieć co się robi, ale z tym problemem już się
    uporałem. Większe wyzwanie stanowi dla mnie C++ (ten język chyba już na poziomie
    projektowania stawiał sobie za bycie nieprzejrzystym i inkluzywnym) i dokumentacja
    PractRand.

    Odnośnie C++ właśnie wkleiłem kluczową linię kodu:
    fwrite( buf, 1, sizeof(buf), stdout );
    Lina ta wywala binarnie bufor na standardowe wyjście, wcześniej trzeba go
    zapełnić binarnymi danymi. W pliku do którego
    dałem link jest pełny przykład.

    Odnośnie Practrand ta linia jest kluczowa:
    { time ./$prog | ./../../PractRand/RNG_test stdin -singlethreaded -tlmax 360000s >
    $test; } 2> $time
    Przekierowuje ona standardowe wyjście programu do programu PractRand, reszta to
    opcje, pomiar czasu, przekierowanie wyników.

    W skrócie, jeśli PractRand jest w tym samym katalogu co program, uruchamia się to
    tak:
    ./Program | ./PractRand stdin [tu wpisz opcje PractRand]

    Jeśli dane są w pliku binarnym to tak:
    cat dane_binarne.bin | ./PractRand stdin [tu wpisz opcje PractRand]

    Jeśli w są w tekstowym, to np. tak (nie wiem czy można prościej, by musiała być
    odpowiednia
    opcja PractRand i odpowiedni format danych tekstowych - może jest):
    cat dane_tekstowe.txt | ./zamien_na_binarne | ./PractRand stdin [tu wpisz opcje
    PractRand]
    Ale program który poprawnie zamieni Twoje dane tekstowe na dane binarne musisz
    napisać sobie sam.

    Pozdrawiam

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: