On Friday, August 20, 2021 at 8:45:23 PM UTC+2, o...@g...com wrote:
> > Jeśli dane są w pliku binarnym to tak:
> > cat dane_binarne.bin | ./PractRand stdin [tu wpisz opcje PractRand]
> Jakie są te opcje PractRand? Ja uruchamiam to w ten sposób:
>
> cat plik.data | ./RNG_test stdin
>
> Niestety zwiększenie rozmiaru pliku do 230 GB nie pomogło, a więcej nie zmieści mi
się na dysku. Wciąż dziwią mnie te oblane testy, podczas, gdy wszystkie testy
Dieharder ten generator zdawał. Albo PractRand jest o tyle bardziej wymagający, albo
nadal coś jest nie tak.
> > > Wydaje mi się, że prędzej, niż ogarnę C++ zrobię odpowiedni plik.
> > Można ,ale dobre testowanie wymaga dużo danych. Osobiście testowałem generatory
minimum
> > godzinę, maksimum (o ile pamiętam) dwa tygodnie na jednym wątku. Przez ten czas,
szczególnie
> > przez dwa tygodnie, generator jest w stanie wygenerować sporo liczb i program
testowy sporo skonsumować.
> > Liczby z dwóch tygodni nie wiem czy zmieszczą się na dysku.
> Na pewno się nie zmieszczą. Już osiągnąłem limit. Z jakichś powodów zresztą bardzo
szybko udało mi się to wygenerować i zapisać do pliku (godzina z hakiem), tak jakby
liczby w formacie binarnym zapisywały się szybciej. 50 GB liczb 32-bitowych w
formacie dziesiętnym zapisywało mi się kilka godzin.
>
> Ile GB w takim przetestowałeś, skoro robiłeś testy nawet 2 tygodnie?
> > > Przepisanie kodu z Pythona do C++ musiałbym raczej komuś zlecić.
> > Co tam konkretnie jest do napisania? Może coś podobnego jest to gotowe pod
linkami które podałem?
> Przykładowy program:
>
> https://pastebin.com/K164URZQ
>
> Liczby 128-bitowe są tam ładowanie po prostu do listy allstream, ale oczywiście
można to zaaranżować inaczej.
> > > Pytanie, czy będę w stanie wygenerować odpowiedni plik w odpowiednim czasie (bo
pomimo, że generatory, które testuję są
> > > jednymi z najszybszych na świecie, co do zasady są podobne do PCG generators,
to Python nie dość, że bywa 50-100 razy
> > > wolniejszy niż C++, to jeszcze do tego sam zapis do pliku trwa długo i jak
szybki nie byłby generator - nie da się tego procesu
> > > przyspieszyć). Ile PractRand potrzebuje danych?
> > Zapis całego dużego dysku to np. jedna doba, ale zależy jaki szybki/duży dysk,
może być godzina, może być tydzień. Trudno
> > bez testów powiedzieć czy wolniejszy będzie zapis czy powolne generowanie
najszybszym generatorem na świecie. PractRand
> > tym lepiej testuje im więcej danych otrzyma.
> Ja zapisałem cały dysk w godzinę z hakiem.
> > > żeby generator nie oblewał testów (gdy danych było za mało plik był zawijany i
do testów był brane w kółko te same liczby, do
> > > powodowało oblewanie testów). A i tak zawijał niektóre próbki, tzw. "
rewounds".
> > Temat jest trudniejszy, może generator na małych zapętlonych danych przechodzić
test, na na długich oblewać.
> W każdym razie wszystkie testy przy odpowiedniej ilości danych zdawał. Wystarczyło
50 GB danych, zapisanych w formacie dziesiętnym jako liczby 32-bitowe.
> > Chyba najlepiej odtworzyć te same dane losowe co były użyte w programie, aby mieć
pewność że program
> > pracował na losowych danych które przechodzą testy statystyczne.
> Używam tych samych danych. A mimo to w PractRand pełno testów jest niezdanych.
> > Zadziała, ale jeśli tester nie wspomaga plików tekstowych, to trzeba samemu
napisać program który zamieni dane tekstowe na binarne.
> > Potem dam przykładowy kod w C++, może dziś wieczorem, to kilka linijek.
> Wygenerowałem plik .data. Zapisałem tam liczby w formacie binarnym. Wszystko
wskazuje na to, że to powinno działać. Może po prostu generator nie zdaje testów. Z
drugiej jednak strony, jeśli Ty piszesz, że testowałeś generator nawet kilka dni, to
jest nic w porównaniu z danymi, które ja dostarczyłem do testów, wygenerowanymi
zaledwie w godzinę. Może po prostu jest ich za mało. Ale, czy 230 GB to za mało?
> > 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.
Ok.
Pobierz ten plik źródłowy i skompiluj konwerter.
https://github.com/mmarszik/01ToBin/blob/main/main.c
pp
Potem uruchom tak:
TwójGeneratorZerIJedynek | ./01ToBin | ./PractRand stdin
Albo gorzej tak:
cat PlikZerIJedynek | ./01ToBin | ./PractRand stdin
Nie testowałem, jak nie zadziała, to będzie trzeba sprawdzić czy konwerter nie ma
jakiś błędów
Pozdrawiam
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
Wynagrodzenia za pracę w magazynie sięgają 25 tys. zł brutto
Ceny mieszkań nie spadają z powodu wakacji kredytowych?
"Mieszkanie bez wkładu własnego" jest, ale kredytów brak
Spokojny handel na Wall Street
Ford Tourneo Connect 2022
Dziecko na wakacjach - jak zweryfikować kwalifikacje opiekunów?
Wniosek o 300 plus można składać od 1 lipca