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
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
Popyt na mieszkania niższy, ceny znów wzrosły
Będą zmiany zasad pobierania zaliczek na podatek PIT
Zdolność kredytowa V 2022. Największe spadki za nami
Próba kontynuacji odbicia cen akcji w górę
Zdolność kredytowa: kogo i gdzie stać na zakup mieszkania?
SEAT Tarraco e-Hybrid FR
Ceny mieszkań pokonują inflację