🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.c
78 messages
78 total messages Page 1 of 2 Started by Norbert Cielecki Sat, 02 Jul 2016 17:05
Page 1 of 2 • 78 total messages
test randomizacyjny w C
#308696
Author: Norbert Cielecki
Date: Sat, 02 Jul 2016 17:05
9 lines
1360 bytes
Witam!
Czy ktoś mógłby mi wytłumaczyć, wjaki sposób funkcja rand() może | ma
skorzystać z 10 ziaren losowych srand(time(0)), przy generowaniu 1000
liczb pseudolosowych z zakresu 1-10.  Chodzi mi dokładnie o zbadanie
losowości generatora liczb pseudolosowych.  Wdzięczny będę za wskazówki.

-- 
pzdr NTC
Re: test randomizacyjny w C
#308693
Author: bartekltg
Date: Sat, 02 Jul 2016 18:59
37 lines
2217 bytes
On 02.07.2016 19:05, Norbert Cielecki wrote:
>
> Witam!
> Czy ktoś mógłby mi wytłumaczyć, wjaki sposób funkcja rand() może | ma
> skorzystać z 10 ziaren losowych srand(time(0)), przy generowaniu 1000
> liczb pseudolosowych z zakresu 1-10.

Opisz dokładnie, co chcesz zrobić, bo albo chcesz zrobić jakiś bardzo
specyficzny test (więc trzeba go opisać dokładnie) albo coś
pokiełbasiłeś.

Po co ziarno zadawać 10 razy? Przeceiż to bez sensu. srand masz wywołać
raz, kolejne wywołania już sobie radzą.


> Chodzi mi dokładnie o zbadanie
> losowości generatora liczb pseudolosowych.  Wdzięczny będę za wskazówki.

A jak chcesz zbadać losowość? Losowość jako takiej nie da się stwierzić,
można co najwyżej przygotować szereg testów działających na próbce
liczb (ale nie 1000!) i porównać rozkłąd wyników z oczekiwanym.
Dużo można się dowiedzieć przeglądając dokumentacje
bawiąc się zestawem dieharder (rozwinięty i uwspółcześniony techniczne
słynny test diehard).


Jeśli to nie musi być C, a możę być c++, jest tam bardzo ładna
biblioteczka <random>. NAjpopularniejsze generatory są tam
zaimplementowane, więc można by choćby porównać.


BTW, pamiętaj, że srand(time(0)) nie jest dobrym rozwiązaniem
dla kryptografii.


pzdr
bartekltg
Re: test randomizacyjny w C
#308700
Author: M.M.
Date: Sun, 03 Jul 2016 10:57
20 lines
1981 bytes
On Saturday, July 2, 2016 at 7:05:22 PM UTC+2, Norbert Cielecki wrote:
> Witam!
> Czy ktoś mógłby mi wytłumaczyć, wjaki sposób funkcja rand() 

Gdy kiedyś sprawdzałem, to był liniowy, coś w stylu
rnd() {
next = (a * prev + b) mod N
prev = next;
return next;
}
Jak jest teraz w popularnych bibliotekach - nie wiem.

> może | ma
> skorzystać z 10 ziaren losowych srand(time(0)), przy generowaniu 1000
> liczb pseudolosowych z zakresu 1-10.  Chodzi mi dokładnie o zbadanie
> losowości generatora liczb pseudolosowych.  Wdzięczny będę za wskazówki.
Pewnie nie przejdzie najprostszych testów na zależność. Pozostałe testy
powinien przejść... zbyt dobrze, bo to generator 'doskonale równomierny'

Pozdrawiam
Re: test randomizacyjny w C
#308699
Author: Norbert Cielecki
Date: Sun, 03 Jul 2016 12:43
46 lines
2680 bytes
bartekltg <bartekltg@gmail.com> wrote:
> On 02.07.2016 19:05, Norbert Cielecki wrote:
>>
>> Witam!
>> Czy ktoś mógłby mi wytłumaczyć, wjaki sposób funkcja rand() może | ma
>> skorzystać z 10 ziaren losowych srand(time(0)), przy generowaniu 1000
>> liczb pseudolosowych z zakresu 1-10.
> 
> Opisz dokładnie, co chcesz zrobić, bo albo chcesz zrobić jakiś bardzo
> specyficzny test (więc trzeba go opisać dokładnie) albo coś
> pokiełbasiłeś.
> 
> Po co ziarno zadawać 10 razy? Przeceiż to bez sensu. srand masz wywołać
> raz, kolejne wywołania już sobie radzą.
> 
> 
>> Chodzi mi dokładnie o zbadanie
>> losowości generatora liczb pseudolosowych.  Wdzięczny będę za wskazówki.
> 
> A jak chcesz zbadać losowość? Losowość jako takiej nie da się stwierzić,
> można co najwyżej przygotować szereg testów działających na próbce
> liczb (ale nie 1000!) i porównać rozkłąd wyników z oczekiwanym.
> Dużo można się dowiedzieć przeglądając dokumentacje
> bawiąc się zestawem dieharder (rozwinięty i uwspółcześniony techniczne
> słynny test diehard).
> 
> 
> Jeśli to nie musi być C, a możę być c++, jest tam bardzo ładna
> biblioteczka <random>. NAjpopularniejsze generatory są tam
> zaimplementowane, więc można by choćby porównać.
> 
> 
> BTW, pamiętaj, że srand(time(0)) nie jest dobrym rozwiązaniem
> dla kryptografii.
> 
> 
> pzdr
> bartekltg
> 
Po prostu mam napisać program generujący 1000 losowych liczb z
przedziału 1 do 10.  Program ma korzystać z 10 różnych ziaren. Należy
użyć standardowych funkcji ANSI C: rand() i srand().  Program ma
sprawdzać w ten sposób losowość określonego generatora liczb losowych.  

-- 
pzdr NTC
Re: test randomizacyjny w C
#308697
Author: M.M.
Date: Sun, 03 Jul 2016 13:37
12 lines
2129 bytes
On Sunday, July 3, 2016 at 2:43:05 PM UTC+2, Norbert Cielecki wrote:
> Po prostu mam napisać program generujący 1000 losowych liczb z
> przedziału 1 do 10.  Program ma korzystać z 10 różnych ziaren. Należy
> użyć standardowych funkcji ANSI C: rand() i srand().  Program ma
> sprawdzać w ten sposób losowość określonego generatora liczb losowych.  

Brak w Twoim opisie właśnie tego sprawdzania. Generowanie liczb
losowych to generowanie, a sprawdzanie to sprawdzanie, przez generowanie
nie sprawdzisz ich losowości. Nie wiem jak zamierzasz sprawdzać, ale
1000 liczb to za mało. Może chodziło o wygenerowanie miliard razy po 1000?

Pozdrawiam
Re: test randomizacyjny w C
#308698
Author: Matt D.
Date: Mon, 04 Jul 2016 01:23
43 lines
2564 bytes
On 7/2/2016 19:05, Norbert Cielecki wrote:
>
> Witam!
> Czy ktoś mógłby mi wytłumaczyć, wjaki sposób funkcja rand() może | ma
> skorzystać z 10 ziaren losowych srand(time(0)), przy generowaniu 1000
> liczb pseudolosowych z zakresu 1-10.  Chodzi mi dokładnie o zbadanie
> losowości generatora liczb pseudolosowych.  Wdzięczny będę za wskazówki.

W praktyce: Istniejace implementacje `rand` _zdecydowanie_ zawala kazde 
porzadne testy losowosci.

A wiec jesli Twoim celem jest odpowiedzenie na pytanie, "czy `rand` 
przejdzie test(y) losowosci", to natychmiast -- i bez dalszej straty 
czasu -- odpowiedz jest prosta i bezwzgledna: ABSOLUTNIE NIE! (bez 
szans, bez wyjatkow, bez przeprosin).

(W teorii, zachowanie `rand` jest implementation-defined, wiec mozna 
sobie wyobrazic implementacje ktore zrobia cos innego -- osobiscie nie 
znam takowej.)

Jesli chodzi o czysta ciekawosc (i przekonanie sie, ze, faktycznie, 
zawali :]): Diehard i TestU01 to podstawowe testy (a raczej cale 
kolekcje tychze)--wiec mozesz zaczac od nich:
https://en.wikipedia.org/wiki/Diehard_tests
https://en.wikipedia.org/wiki/TestU01

Tutaj jest implementacja TestU01 w ANSI C:
http://www.iro.umontreal.ca/~simardr/testu01/tu01.html

Patrz tez:
http://csrc.nist.gov/groups/ST/toolkit/rng/batteries_stats_test.html
http://stackoverflow.com/questions/778718/how-to-test-random-numbers

Jak chcesz porzadny generator, to przyjrzyj sie:
http://www.pcg-random.org/

Tutaj przykladowe wyniki testow (ktorym mozesz sie przyjrzec takze--jako 
przyklad, jak testowac):
http://www.pcg-random.org/statistical-tests.html

Pozdrawiam,

Matt
Re: test randomizacyjny w C
#308701
Author: M.M.
Date: Mon, 04 Jul 2016 15:57
15 lines
2144 bytes
On Monday, July 4, 2016 at 3:23:47 AM UTC+2, Matt D. wrote:

> W praktyce: Istniejace implementacje `rand` _zdecydowanie_ zawala kazde 
> porzadne testy losowosci.

Poprawny generator liniowy, zaimplementowany na dużym zakresie
powinien przejść doskonale wszystkie testy na równomierność rozkładu, ponieważ
generuje wszystkie liczby z zakresu od 0 do N-1. Moim zdaniem problem tego
generatora polega na tym, że przechodzi te testy zbyt dokładnie.

Problemy ten generator dopiero ma przy testach na zależność, bo 
liczba losowa numer [i] zależy bezpośrednio od liczby [i-1]. 
W ciut lepszych odmianach zależy od dwóch lub trzech poprzednich.

Pozdrawiam
Re: test randomizacyjny w C
#308702
Author: M.M.
Date: Mon, 04 Jul 2016 18:06
35 lines
2891 bytes
On Monday, July 4, 2016 at 5:57:17 PM UTC+2, M.M. wrote:
> On Monday, July 4, 2016 at 3:23:47 AM UTC+2, Matt D. wrote:
> 
> > W praktyce: Istniejace implementacje `rand` _zdecydowanie_ zawala kazde 
> > porzadne testy losowosci.
> 
> Poprawny generator liniowy, zaimplementowany na dużym zakresie
> powinien przejść doskonale wszystkie testy na równomierność rozkładu, ponieważ
> generuje wszystkie liczby z zakresu od 0 do N-1. Moim zdaniem problem tego
> generatora polega na tym, że przechodzi te testy zbyt dokładnie.
> 
> Problemy ten generator dopiero ma przy testach na zależność, bo 
> liczba losowa numer [i] zależy bezpośrednio od liczby [i-1]. 
> W ciut lepszych odmianach zależy od dwóch lub trzech poprzednich.
> 
> Pozdrawiam

Spoglądam na tę stronę z testami generatorów:
http://www.cacert.at/cgi-bin/rngresults

stdlib rand() - nie przechodzi ich testów.
java.util.Random.Random - też nie przechodzi
MT19337(java)  nie przechodzi? czy to to jest merseen twister???
MersenneTwister19937 Gaussian - to na pewno MT, nie przechodzi???
Mersenne Twister (with some speed optimization) - prawie przeszedł, ale tylko 6Mbajtów na sekundę.

Czy ja czegoś nie rozumiem? MT nie przechodzi testów?

Aż musiałem wrzucić generator mojego autorstwa:
my generator no have any important name yet, version 0.00
Wygląda na to że przechodzi ichniejsze testy.

Trochę jestem zaskoczony.

Pozdrawiam
Re: test randomizacyjny w C
#308703
Author: Matt D.
Date: Mon, 04 Jul 2016 19:12
73 lines
4160 bytes
On 7/4/2016 20:06, M.M. wrote:
> On Monday, July 4, 2016 at 5:57:17 PM UTC+2, M.M. wrote:
>> On Monday, July 4, 2016 at 3:23:47 AM UTC+2, Matt D. wrote:
>>
>>> W praktyce: Istniejace implementacje `rand` _zdecydowanie_ zawala kazde
>>> porzadne testy losowosci.
>>
>> Poprawny generator liniowy, zaimplementowany na dużym zakresie
>> powinien przejść doskonale wszystkie testy na równomierność rozkładu, ponieważ
>> generuje wszystkie liczby z zakresu od 0 do N-1. Moim zdaniem problem tego
>> generatora polega na tym, że przechodzi te testy zbyt dokładnie.

Byc moze, ale...

>> Problemy ten generator dopiero ma przy testach na zależność, bo
>> liczba losowa numer [i] zależy bezpośrednio od liczby [i-1].
>> W ciut lepszych odmianach zależy od dwóch lub trzech poprzednich.

...wlasnie. I w testach losowosci w sensie ogolnym musimy miec 
zaliczenie baterii (t.j., calej kolekcji) -- zawalenie jednego implikuje 
zawalenie baterii.

> Spoglądam na tę stronę z testami generatorów:
> http://www.cacert.at/cgi-bin/rngresults
>
> stdlib rand() - nie przechodzi ich testów.
> java.util.Random.Random - też nie przechodzi
> MT19337(java)  nie przechodzi? czy to to jest merseen twister???
> MersenneTwister19937 Gaussian - to na pewno MT, nie przechodzi???
> Mersenne Twister (with some speed optimization) - prawie przeszedł, ale tylko 6Mbajtów na sekundę.
>
> Czy ja czegoś nie rozumiem? MT nie przechodzi testów?

Oczywiscie -- tutaj nie ma zadnego zaskoczenia, MT zdecydowanie nie 
nadaje sie do krypto --- bardziej nadaje sie do obliczen numerycznych 
(n.p., naukowe symulacje), gdzie statystyczne wlasciwosci rozkladu sa 
wazniejsze od nieprzewidywalnosci (ale tez nie jest najlepszy, to bardzo 
ciezki -- duzy stan -- i powolny generator).

// Dla szybkosci (numeryka, nie krypto) to raczej 
http://www.agner.org/random/

Drastyczny przyklad dlaczego numeryki nie zawsze obchodza problemy 
kryptografow -- QRNG (quasi-random number generator -- w odroznieniu od 
PRNG/pseudo):
https://en.wikipedia.org/wiki/Low-discrepancy_sequence
http://www.johndcook.com/blog/2009/03/16/quasi-random-sequences-in-art-and-integration/

Czysta matematyka dyskretna / teoria liczb, a wiec w pelni 
deterministyczny i trywialnie przewidywalny -- ale do calkowania Monte 
Carlo potrafi sie calkiem niezle sprawdzac :-)
https://en.wikipedia.org/wiki/Quasi-Monte_Carlo_method

> Aż musiałem wrzucić generator mojego autorstwa:
> my generator no have any important name yet, version 0.00
> Wygląda na to że przechodzi ichniejsze testy.
>
> Trochę jestem zaskoczony.

Ciekawe, moze cos dobrego masz :-)

Czytajac opis jednak: "At the moment, we are using ENT and diehard for 
analysis. ENT is used to sort all results, and diehard is used to raise 
red flags. We are trying to switch to dieharder which promises better 
tests than diehard."
http://www.cacert.at/random/

Wiec mozesz jeszcze TestU01 (poprzedni post) i Dieharder sprawdzic:
http://www.phy.duke.edu/~rgb/General/dieharder.php

Pozdrawiam,

Matt
Re: test randomizacyjny w C
#308704
Author: M.M.
Date: Tue, 05 Jul 2016 08:13
71 lines
5059 bytes
On Monday, July 4, 2016 at 9:12:56 PM UTC+2, Matt D. wrote:
> On 7/4/2016 20:06, M.M. wrote:
> > On Monday, July 4, 2016 at 5:57:17 PM UTC+2, M.M. wrote:
> >> On Monday, July 4, 2016 at 3:23:47 AM UTC+2, Matt D. wrote:
> >>
> >>> W praktyce: Istniejace implementacje `rand` _zdecydowanie_ zawala kazde
> >>> porzadne testy losowosci.
> >>
> >> Poprawny generator liniowy, zaimplementowany na dużym zakresie
> >> powinien przejść doskonale wszystkie testy na równomierność rozkładu, ponieważ
> >> generuje wszystkie liczby z zakresu od 0 do N-1. Moim zdaniem problem tego
> >> generatora polega na tym, że przechodzi te testy zbyt dokładnie.
> 
> Byc moze, ale...
> 
> >> Problemy ten generator dopiero ma przy testach na zależność, bo
> >> liczba losowa numer [i] zależy bezpośrednio od liczby [i-1].
> >> W ciut lepszych odmianach zależy od dwóch lub trzech poprzednich.
> 
> ...wlasnie. I w testach losowosci w sensie ogolnym musimy miec 
> zaliczenie baterii (t.j., calej kolekcji) -- zawalenie jednego implikuje 
> zawalenie baterii.
Tak, oczywiście chodzi o zaliczenie całej serii testów. 

> Oczywiscie -- tutaj nie ma zadnego zaskoczenia, MT zdecydowanie nie 
> nadaje sie do krypto --- bardziej nadaje sie do obliczen numerycznych 
> (n.p., naukowe symulacje), gdzie statystyczne wlasciwosci rozkladu sa 
> wazniejsze od nieprzewidywalnosci (ale tez nie jest najlepszy, to bardzo 
> ciezki -- duzy stan -- i powolny generator).
Ok, więc tylko mnie zaskakuje jego przewidywalność. Gdzieś czytałem, że
trzeba znać około 600-700 liczby, aby przewidywać kolejne, dla automatycznych
testów, to nie wydaje się zbyt łatwe. A co do stanu, to mój generator ma
jeszcze większy. Co do wydajności, gdy kiedyś pobieżnie spojrzałem na kod
MT, to nie wydawał się bardzo obliczeniowo-ciężki. Nie miał operacji
modulo.

> Czysta matematyka dyskretna / teoria liczb, a wiec w pelni 
> deterministyczny i trywialnie przewidywalny -- ale do calkowania Monte 
> Carlo potrafi sie calkiem niezle sprawdzac :-)
> https://en.wikipedia.org/wiki/Quasi-Monte_Carlo_method
Ok.


> > Aż musiałem wrzucić generator mojego autorstwa:
> > my generator no have any important name yet, version 0.00
> > Wygląda na to że przechodzi ichniejsze testy.
> >
> > Trochę jestem zaskoczony.
> 
> Ciekawe, moze cos dobrego masz :-)
Nic rewelacyjnego, mam złożenie dwóch generatorów fibbonaciego. Jest 
bardzo szybki, ma duży stan, a że przechodzi testy kryptograficzne - to
jestem zaskoczony.


> Czytajac opis jednak: "At the moment, we are using ENT and diehard for 
> analysis. ENT is used to sort all results, and diehard is used to raise 
> red flags. We are trying to switch to dieharder which promises better 
> tests than diehard."
> http://www.cacert.at/random/
> 
> Wiec mozesz jeszcze TestU01 (poprzedni post) i Dieharder sprawdzic:
> http://www.phy.duke.edu/~rgb/General/dieharder.php
Ale to bym musiał swój generator wkompilować w tamten kod? A nie, można
dać mu swoje liczby na wejście:
[
Dieharder also supports file-based input three distinct ways. The simplest is to use the (raw binary) stdin interface to pipe a bit stream from any rng, hardware or software, through dieharder for testing. In addition, one can use "direct" file input of either raw binary or ascii formatted (usually uint) random numbers. The man page contains examples of how to do all three of these things, and dieharder itself can generate sample files to use as templates for the appropriate formatting.
]
To będę musiał spróbować.

Pozdrawiam
Re: test randomizacyjny w C
#308705
Author: M.M.
Date: Tue, 05 Jul 2016 10:30
277 lines
19420 bytes
On Tuesday, July 5, 2016 at 10:13:40 AM UTC+2, M.M. wrote:
> On Monday, July 4, 2016 at 9:12:56 PM UTC+2, Matt D. wrote:

Mój działa 2 razy wolniej, ale łączy się przez pipe, więc w
rzeczywistości może działać szybciej. Jeśli coś z tego rozumiem,
to mój nie przeszedł jednego testu. mt19937 oblał 5 testów.


Pozdrawiam


time ./rnd | dieharder -a -g 200
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
stdin_input_raw|  3.04e+07  | 138388667|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.52531594|  PASSED  
      diehard_operm5|   0|   1000000|     100|0.88766999|  PASSED  
  diehard_rank_32x32|   0|     40000|     100|0.03233666|  PASSED  
    diehard_rank_6x8|   0|    100000|     100|0.29721444|  PASSED  
   diehard_bitstream|   0|   2097152|     100|0.34918380|  PASSED  
        diehard_opso|   0|   2097152|     100|0.50657945|  PASSED  
        diehard_oqso|   0|   2097152|     100|0.88860585|  PASSED  
         diehard_dna|   0|   2097152|     100|0.05853630|  PASSED  
diehard_count_1s_str|   0|    256000|     100|0.80996803|  PASSED  
diehard_count_1s_byt|   0|    256000|     100|0.08162491|  PASSED  
 diehard_parking_lot|   0|     12000|     100|0.98287267|  PASSED  
    diehard_2dsphere|   2|      8000|     100|0.14004802|  PASSED  
    diehard_3dsphere|   3|      4000|     100|0.62339373|  PASSED  
     diehard_squeeze|   0|    100000|     100|0.87961146|  PASSED  
        diehard_sums|   0|       100|     100|0.14747688|  PASSED  
        diehard_runs|   0|    100000|     100|0.41225423|  PASSED  
        diehard_runs|   0|    100000|     100|0.96926418|  PASSED  
       diehard_craps|   0|    200000|     100|0.83187785|  PASSED  
       diehard_craps|   0|    200000|     100|0.97190438|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.91405742|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.50484522|  PASSED  
         sts_monobit|   1|    100000|     100|0.81377042|  PASSED  
            sts_runs|   2|    100000|     100|0.37037702|  PASSED  
          sts_serial|   1|    100000|     100|0.99023947|  PASSED  
          sts_serial|   2|    100000|     100|0.24827683|  PASSED  
          sts_serial|   3|    100000|     100|0.53130014|  PASSED  
          sts_serial|   3|    100000|     100|0.87529218|  PASSED  
          sts_serial|   4|    100000|     100|0.96893525|  PASSED  
          sts_serial|   4|    100000|     100|0.14342891|  PASSED  
          sts_serial|   5|    100000|     100|0.63549263|  PASSED  
          sts_serial|   5|    100000|     100|0.20667114|  PASSED  
          sts_serial|   6|    100000|     100|0.06599729|  PASSED  
          sts_serial|   6|    100000|     100|0.32501327|  PASSED  
          sts_serial|   7|    100000|     100|0.88778087|  PASSED  
          sts_serial|   7|    100000|     100|0.40056722|  PASSED  
          sts_serial|   8|    100000|     100|0.86893848|  PASSED  
          sts_serial|   8|    100000|     100|0.99532747|   WEAK   
          sts_serial|   9|    100000|     100|0.84014250|  PASSED  
          sts_serial|   9|    100000|     100|0.94151999|  PASSED  
          sts_serial|  10|    100000|     100|0.41157574|  PASSED  
          sts_serial|  10|    100000|     100|0.02411568|  PASSED  
          sts_serial|  11|    100000|     100|0.50501685|  PASSED  
          sts_serial|  11|    100000|     100|0.68418150|  PASSED  
          sts_serial|  12|    100000|     100|0.47532332|  PASSED  
          sts_serial|  12|    100000|     100|0.62428815|  PASSED  
          sts_serial|  13|    100000|     100|0.79036248|  PASSED  
          sts_serial|  13|    100000|     100|0.15910267|  PASSED  
          sts_serial|  14|    100000|     100|0.84958889|  PASSED  
          sts_serial|  14|    100000|     100|0.30018601|  PASSED  
          sts_serial|  15|    100000|     100|0.83934280|  PASSED  
          sts_serial|  15|    100000|     100|0.07175863|  PASSED  
          sts_serial|  16|    100000|     100|0.17223749|  PASSED  
          sts_serial|  16|    100000|     100|0.45766428|  PASSED  
         rgb_bitdist|   1|    100000|     100|0.80372836|  PASSED  
         rgb_bitdist|   2|    100000|     100|0.95969836|  PASSED  
         rgb_bitdist|   3|    100000|     100|0.51430744|  PASSED  
         rgb_bitdist|   4|    100000|     100|0.78846985|  PASSED  
         rgb_bitdist|   5|    100000|     100|0.28001141|  PASSED  
         rgb_bitdist|   6|    100000|     100|0.68435557|  PASSED  
         rgb_bitdist|   7|    100000|     100|0.79218193|  PASSED  
         rgb_bitdist|   8|    100000|     100|0.93569113|  PASSED  
         rgb_bitdist|   9|    100000|     100|0.50762348|  PASSED  
         rgb_bitdist|  10|    100000|     100|0.56450384|  PASSED  
         rgb_bitdist|  11|    100000|     100|0.72211880|  PASSED  
         rgb_bitdist|  12|    100000|     100|0.21548326|  PASSED  
rgb_minimum_distance|   2|     10000|    1000|0.91735245|  PASSED  
rgb_minimum_distance|   3|     10000|    1000|0.32193968|  PASSED  
rgb_minimum_distance|   4|     10000|    1000|0.59488409|  PASSED  
rgb_minimum_distance|   5|     10000|    1000|0.37491662|  PASSED  
    rgb_permutations|   2|    100000|     100|0.40949502|  PASSED  
    rgb_permutations|   3|    100000|     100|0.51640079|  PASSED  
    rgb_permutations|   4|    100000|     100|0.41945147|  PASSED  
    rgb_permutations|   5|    100000|     100|0.57090317|  PASSED  
      rgb_lagged_sum|   0|   1000000|     100|0.83402481|  PASSED  
      rgb_lagged_sum|   1|   1000000|     100|0.86127793|  PASSED  
      rgb_lagged_sum|   2|   1000000|     100|0.39657047|  PASSED  
      rgb_lagged_sum|   3|   1000000|     100|0.55831463|  PASSED  
      rgb_lagged_sum|   4|   1000000|     100|0.23344944|  PASSED  
      rgb_lagged_sum|   5|   1000000|     100|0.40792383|  PASSED  
      rgb_lagged_sum|   6|   1000000|     100|0.78179052|  PASSED  
      rgb_lagged_sum|   7|   1000000|     100|0.89423675|  PASSED  
      rgb_lagged_sum|   8|   1000000|     100|0.14714328|  PASSED  
      rgb_lagged_sum|   9|   1000000|     100|0.26929109|  PASSED  
      rgb_lagged_sum|  10|   1000000|     100|0.52379881|  PASSED  
      rgb_lagged_sum|  11|   1000000|     100|0.66150187|  PASSED  
      rgb_lagged_sum|  12|   1000000|     100|0.15554845|  PASSED  
      rgb_lagged_sum|  13|   1000000|     100|0.72894890|  PASSED  
      rgb_lagged_sum|  14|   1000000|     100|0.78340244|  PASSED  
      rgb_lagged_sum|  15|   1000000|     100|0.99139978|  PASSED  
      rgb_lagged_sum|  16|   1000000|     100|0.25041408|  PASSED  
      rgb_lagged_sum|  17|   1000000|     100|0.91756504|  PASSED  
      rgb_lagged_sum|  18|   1000000|     100|0.01608173|  PASSED  
      rgb_lagged_sum|  19|   1000000|     100|0.86694728|  PASSED  
      rgb_lagged_sum|  20|   1000000|     100|0.95291747|  PASSED  
      rgb_lagged_sum|  21|   1000000|     100|0.21757066|  PASSED  
      rgb_lagged_sum|  22|   1000000|     100|0.88954703|  PASSED  
      rgb_lagged_sum|  23|   1000000|     100|0.43995263|  PASSED  
      rgb_lagged_sum|  24|   1000000|     100|0.32606761|  PASSED  
      rgb_lagged_sum|  25|   1000000|     100|0.63786474|  PASSED  
      rgb_lagged_sum|  26|   1000000|     100|0.22024218|  PASSED  
      rgb_lagged_sum|  27|   1000000|     100|0.60748714|  PASSED  
      rgb_lagged_sum|  28|   1000000|     100|0.22731428|  PASSED  
      rgb_lagged_sum|  29|   1000000|     100|0.14715134|  PASSED  
      rgb_lagged_sum|  30|   1000000|     100|0.15898244|  PASSED  
      rgb_lagged_sum|  31|   1000000|     100|0.64918290|  PASSED  
      rgb_lagged_sum|  32|   1000000|     100|0.64234164|  PASSED  
     rgb_kstest_test|   0|     10000|    1000|0.24073434|  PASSED  
     dab_bytedistrib|   0|  51200000|       1|0.77067727|  PASSED  
             dab_dct| 256|     50000|       1|0.90677849|  PASSED  
Preparing to run test 207.  ntuple = 0
        dab_filltree|  32|  15000000|       1|0.94397094|  PASSED  
        dab_filltree|  32|  15000000|       1|0.81306030|  PASSED  
Preparing to run test 208.  ntuple = 0
       dab_filltree2|   0|   5000000|       1|0.54259568|  PASSED  
       dab_filltree2|   1|   5000000|       1|0.44663870|  PASSED  
Preparing to run test 209.  ntuple = 0
        dab_monobit2|  12|  65000000|       1|0.45485201|  PASSED  

real    45m26.438s
user    55m27.512s
sys     3m43.327s
----------------------------------------------------------------




time dieharder -a
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
        mt19937|  8.34e+07  |3775359676|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.89149356|  PASSED  
      diehard_operm5|   0|   1000000|     100|0.40351064|  PASSED  
  diehard_rank_32x32|   0|     40000|     100|0.40868176|  PASSED  
    diehard_rank_6x8|   0|    100000|     100|0.76813313|  PASSED  
   diehard_bitstream|   0|   2097152|     100|0.24965193|  PASSED  
        diehard_opso|   0|   2097152|     100|0.16890967|  PASSED  
        diehard_oqso|   0|   2097152|     100|0.99779832|   WEAK   
         diehard_dna|   0|   2097152|     100|0.60524380|  PASSED  
diehard_count_1s_str|   0|    256000|     100|0.64937667|  PASSED  
diehard_count_1s_byt|   0|    256000|     100|0.05266623|  PASSED  
 diehard_parking_lot|   0|     12000|     100|0.21450471|  PASSED  
    diehard_2dsphere|   2|      8000|     100|0.06469797|  PASSED  
    diehard_3dsphere|   3|      4000|     100|0.56244479|  PASSED  
     diehard_squeeze|   0|    100000|     100|0.20217025|  PASSED  
        diehard_sums|   0|       100|     100|0.00006724|   WEAK   
        diehard_runs|   0|    100000|     100|0.45817843|  PASSED  
        diehard_runs|   0|    100000|     100|0.93494839|  PASSED  
       diehard_craps|   0|    200000|     100|0.97155738|  PASSED  
       diehard_craps|   0|    200000|     100|0.98715073|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.15405864|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.21696794|  PASSED  
         sts_monobit|   1|    100000|     100|0.38593025|  PASSED  
            sts_runs|   2|    100000|     100|0.88756645|  PASSED  
          sts_serial|   1|    100000|     100|0.83372288|  PASSED  
          sts_serial|   2|    100000|     100|0.56224551|  PASSED  
          sts_serial|   3|    100000|     100|0.43843146|  PASSED  
          sts_serial|   3|    100000|     100|0.31321439|  PASSED  
          sts_serial|   4|    100000|     100|0.54157417|  PASSED  
          sts_serial|   4|    100000|     100|0.12212383|  PASSED  
          sts_serial|   5|    100000|     100|0.51672150|  PASSED  
          sts_serial|   5|    100000|     100|0.99670240|   WEAK   
          sts_serial|   6|    100000|     100|0.27193224|  PASSED  
          sts_serial|   6|    100000|     100|0.79304406|  PASSED  
          sts_serial|   7|    100000|     100|0.37635852|  PASSED  
          sts_serial|   7|    100000|     100|0.48104492|  PASSED  
          sts_serial|   8|    100000|     100|0.77978636|  PASSED  
          sts_serial|   8|    100000|     100|0.91548813|  PASSED  
          sts_serial|   9|    100000|     100|0.56116112|  PASSED  
          sts_serial|   9|    100000|     100|0.26976493|  PASSED  
          sts_serial|  10|    100000|     100|0.99302499|  PASSED  
          sts_serial|  10|    100000|     100|0.92480782|  PASSED  
          sts_serial|  11|    100000|     100|0.47650760|  PASSED  
          sts_serial|  11|    100000|     100|0.55346947|  PASSED  
          sts_serial|  12|    100000|     100|0.48281485|  PASSED  
          sts_serial|  12|    100000|     100|0.90786163|  PASSED  
          sts_serial|  13|    100000|     100|0.82035110|  PASSED  
          sts_serial|  13|    100000|     100|0.13517163|  PASSED  
          sts_serial|  14|    100000|     100|0.31478814|  PASSED  
          sts_serial|  14|    100000|     100|0.88822447|  PASSED  
          sts_serial|  15|    100000|     100|0.93250540|  PASSED  
          sts_serial|  15|    100000|     100|0.91138743|  PASSED  
          sts_serial|  16|    100000|     100|0.73854300|  PASSED  
          sts_serial|  16|    100000|     100|0.81083225|  PASSED  
         rgb_bitdist|   1|    100000|     100|0.72719626|  PASSED  
         rgb_bitdist|   2|    100000|     100|0.93691348|  PASSED  
         rgb_bitdist|   3|    100000|     100|0.18604901|  PASSED  
         rgb_bitdist|   4|    100000|     100|0.64526907|  PASSED  
         rgb_bitdist|   5|    100000|     100|0.59249432|  PASSED  
         rgb_bitdist|   6|    100000|     100|0.01985167|  PASSED  
         rgb_bitdist|   7|    100000|     100|0.06514585|  PASSED  
         rgb_bitdist|   8|    100000|     100|0.91399224|  PASSED  
         rgb_bitdist|   9|    100000|     100|0.99417786|  PASSED  
         rgb_bitdist|  10|    100000|     100|0.97776699|  PASSED  
         rgb_bitdist|  11|    100000|     100|0.92253224|  PASSED  
         rgb_bitdist|  12|    100000|     100|0.25547479|  PASSED  
rgb_minimum_distance|   2|     10000|    1000|0.91009966|  PASSED  
rgb_minimum_distance|   3|     10000|    1000|0.73734969|  PASSED  
rgb_minimum_distance|   4|     10000|    1000|0.85031722|  PASSED  
rgb_minimum_distance|   5|     10000|    1000|0.35292577|  PASSED  
    rgb_permutations|   2|    100000|     100|0.29121818|  PASSED  
    rgb_permutations|   3|    100000|     100|0.53520639|  PASSED  
    rgb_permutations|   4|    100000|     100|0.59759367|  PASSED  
    rgb_permutations|   5|    100000|     100|0.67877434|  PASSED  
      rgb_lagged_sum|   0|   1000000|     100|0.53025611|  PASSED  
      rgb_lagged_sum|   1|   1000000|     100|0.74217461|  PASSED  
      rgb_lagged_sum|   2|   1000000|     100|0.44188940|  PASSED  
      rgb_lagged_sum|   3|   1000000|     100|0.98366582|  PASSED  
      rgb_lagged_sum|   4|   1000000|     100|0.12716740|  PASSED  
      rgb_lagged_sum|   5|   1000000|     100|0.82870033|  PASSED  
      rgb_lagged_sum|   6|   1000000|     100|0.31197970|  PASSED  
      rgb_lagged_sum|   7|   1000000|     100|0.44222349|  PASSED  
      rgb_lagged_sum|   8|   1000000|     100|0.65016349|  PASSED  
      rgb_lagged_sum|   9|   1000000|     100|0.42219150|  PASSED  
      rgb_lagged_sum|  10|   1000000|     100|0.03289626|  PASSED  
      rgb_lagged_sum|  11|   1000000|     100|0.76327010|  PASSED  
      rgb_lagged_sum|  12|   1000000|     100|0.21382043|  PASSED  
      rgb_lagged_sum|  13|   1000000|     100|0.54124553|  PASSED  
      rgb_lagged_sum|  14|   1000000|     100|0.54840601|  PASSED  
      rgb_lagged_sum|  15|   1000000|     100|0.95144366|  PASSED  
      rgb_lagged_sum|  16|   1000000|     100|0.57875067|  PASSED  
      rgb_lagged_sum|  17|   1000000|     100|0.26797763|  PASSED  
      rgb_lagged_sum|  18|   1000000|     100|0.61279375|  PASSED  
      rgb_lagged_sum|  19|   1000000|     100|0.19651207|  PASSED  
      rgb_lagged_sum|  20|   1000000|     100|0.99754365|   WEAK   
      rgb_lagged_sum|  21|   1000000|     100|0.85992946|  PASSED  
      rgb_lagged_sum|  22|   1000000|     100|0.96712183|  PASSED  
      rgb_lagged_sum|  23|   1000000|     100|0.78984908|  PASSED  
      rgb_lagged_sum|  24|   1000000|     100|0.94581764|  PASSED  
      rgb_lagged_sum|  25|   1000000|     100|0.84923534|  PASSED  
      rgb_lagged_sum|  26|   1000000|     100|0.60466386|  PASSED  
      rgb_lagged_sum|  27|   1000000|     100|0.51847730|  PASSED  
      rgb_lagged_sum|  28|   1000000|     100|0.29667891|  PASSED  
      rgb_lagged_sum|  29|   1000000|     100|0.82154321|  PASSED  
      rgb_lagged_sum|  30|   1000000|     100|0.93171252|  PASSED  
      rgb_lagged_sum|  31|   1000000|     100|0.22916095|  PASSED  
      rgb_lagged_sum|  32|   1000000|     100|0.99980698|   WEAK   
     rgb_kstest_test|   0|     10000|    1000|0.20101301|  PASSED  
     dab_bytedistrib|   0|  51200000|       1|0.78961457|  PASSED  
             dab_dct| 256|     50000|       1|0.48530283|  PASSED  
Preparing to run test 207.  ntuple = 0
        dab_filltree|  32|  15000000|       1|0.78115681|  PASSED  
        dab_filltree|  32|  15000000|       1|0.13821354|  PASSED  
Preparing to run test 208.  ntuple = 0
       dab_filltree2|   0|   5000000|       1|0.93311623|  PASSED  
       dab_filltree2|   1|   5000000|       1|0.65474810|  PASSED  
Preparing to run test 209.  ntuple = 0
        dab_monobit2|  12|  65000000|       1|0.19217408|  PASSED  
real    22m14.535s
user    22m14.225s
sys     0m0.483s
----------------------------------------------------------------
      
Re: test randomizacyjny w C
#308707
Author: bartekltg
Date: Tue, 05 Jul 2016 13:50
31 lines
2676 bytes
On 05.07.2016 10:13, M.M. wrote:

>> Ciekawe, moze cos dobrego masz :-)
> Nic rewelacyjnego, mam złożenie dwóch generatorów fibbonaciego. Jest
> bardzo szybki, ma duży stan, a że przechodzi testy kryptograficzne - to
> jestem zaskoczony.

Zwiększ parametry w dieharder.

Z wspominanego manuala (analiza RANDU)
Even this RNG, well-known to be terrible for most purposes, is capable
of producing sequences that are “random enough” to pass some of
Diehard’s difficult tests at the default Dieharder values, which in turn
are invariably more challenging than those of Diehard.
What happens if one cranks up the tests to to where they make a RNG die
harder? In the case of randu, mostly it dies. For example the sums test
fails without any doubt at 500 p-values. runs fails badly at 1000. The
squeeze test fails at 300. Even parking lot fails at 2000 p-values. With
randu, “passing” Diehard tests appears to be a matter more of how hard
you look, not whether or not the result is truly random
according to the test measure.
In contrast, mt19937 1999 still passes the runs test at 10000 p-samples,
although at that point the pass gets to be visibly marginal. We
reiterate the previous observation concerning the true purpose of
Dieharder with its variable controls: The point isn’t “pass-
ing” any given test, the point is determining where it fails in a
quantitative way! When this is done one can compare the performance of
different RNGs in a meaningful way on a test by test basis.

pzdr
bartekltg
Re: test randomizacyjny w C
#308706
Author: bartekltg
Date: Tue, 05 Jul 2016 14:03
300 lines
20328 bytes
On 05.07.2016 12:30, M.M. wrote:
> On Tuesday, July 5, 2016 at 10:13:40 AM UTC+2, M.M. wrote:
>> On Monday, July 4, 2016 at 9:12:56 PM UTC+2, Matt D. wrote:
>
> Mój działa 2 razy wolniej, ale łączy się przez pipe, więc w
> rzeczywistości może działać szybciej. Jeśli coś z tego rozumiem,
> to mój nie przeszedł jednego testu. mt19937 oblał 5 testów.

Weak nie oznacza oblał. "FAILED" oznacza oblał, weak oznacza
'należy to dokłądniej zbadać'. Przeczytaj dokumentajcę, jest tam to dość
dobrze tłumaczone. Ta liczba to nie jakość. To zmienna losowa
o (przy załozeniu losowosći ciągu) rozkładzie jednostajnym na [0,1].

Odpaliłeś ponad 100 testów, paru trafień w obszary <0.01 i >0.99
należy się spodziewać. Taki wynik jest równie uprawniony, jak
z obszaru 0.67-0.68 ;-)
Dopiero potwórzenie testu i uparte trafianie w brzeg przediału
sugeruje niepoprawnosć generatora.

Odpal test jeszcze raz, zobaczysz, że najprawdopodobniej "WEAK"
będzie w innych miejscach (pod koniec posta dorzucam wynik u mnie z wczoraj)

Zwalnony generator wygląda tak:

  dieharder -a -g 51
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown 
       #
#=============================================================================#
    rng_name    |rands/second|   Seed   |
          slatec|  1.01e+08  |3631573203|
#=============================================================================#
         test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
    diehard_birthdays|   0|       100|     100|0.00000000|  FAILED
       diehard_operm5|   0|   1000000|     100|0.00000000|  FAILED
   diehard_rank_32x32|   0|     40000|     100|0.00000000|  FAILED
...

pzdr
bartekltg


> time dieharder -a
> #=============================================================================#
> #            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
> #=============================================================================#
>     rng_name    |rands/second|   Seed   |
>          mt19937|  8.34e+07  |3775359676|
> #=============================================================================#
>          test_name   |ntup| tsamples |psamples|  p-value |Assessment
> #=============================================================================#
>     diehard_birthdays|   0|       100|     100|0.89149356|  PASSED
>        diehard_operm5|   0|   1000000|     100|0.40351064|  PASSED
>    diehard_rank_32x32|   0|     40000|     100|0.40868176|  PASSED
>      diehard_rank_6x8|   0|    100000|     100|0.76813313|  PASSED
>     diehard_bitstream|   0|   2097152|     100|0.24965193|  PASSED
>          diehard_opso|   0|   2097152|     100|0.16890967|  PASSED
>          diehard_oqso|   0|   2097152|     100|0.99779832|   WEAK
>           diehard_dna|   0|   2097152|     100|0.60524380|  PASSED
> diehard_count_1s_str|   0|    256000|     100|0.64937667|  PASSED
> diehard_count_1s_byt|   0|    256000|     100|0.05266623|  PASSED
>   diehard_parking_lot|   0|     12000|     100|0.21450471|  PASSED
>      diehard_2dsphere|   2|      8000|     100|0.06469797|  PASSED
>      diehard_3dsphere|   3|      4000|     100|0.56244479|  PASSED
>       diehard_squeeze|   0|    100000|     100|0.20217025|  PASSED
>          diehard_sums|   0|       100|     100|0.00006724|   WEAK
>          diehard_runs|   0|    100000|     100|0.45817843|  PASSED
>          diehard_runs|   0|    100000|     100|0.93494839|  PASSED
>         diehard_craps|   0|    200000|     100|0.97155738|  PASSED
>         diehard_craps|   0|    200000|     100|0.98715073|  PASSED
>   marsaglia_tsang_gcd|   0|  10000000|     100|0.15405864|  PASSED
>   marsaglia_tsang_gcd|   0|  10000000|     100|0.21696794|  PASSED
>           sts_monobit|   1|    100000|     100|0.38593025|  PASSED
>              sts_runs|   2|    100000|     100|0.88756645|  PASSED
>            sts_serial|   1|    100000|     100|0.83372288|  PASSED
>            sts_serial|   2|    100000|     100|0.56224551|  PASSED
>            sts_serial|   3|    100000|     100|0.43843146|  PASSED
>            sts_serial|   3|    100000|     100|0.31321439|  PASSED
>            sts_serial|   4|    100000|     100|0.54157417|  PASSED
>            sts_serial|   4|    100000|     100|0.12212383|  PASSED
>            sts_serial|   5|    100000|     100|0.51672150|  PASSED
>            sts_serial|   5|    100000|     100|0.99670240|   WEAK
>            sts_serial|   6|    100000|     100|0.27193224|  PASSED
>            sts_serial|   6|    100000|     100|0.79304406|  PASSED
>            sts_serial|   7|    100000|     100|0.37635852|  PASSED
>            sts_serial|   7|    100000|     100|0.48104492|  PASSED
>            sts_serial|   8|    100000|     100|0.77978636|  PASSED
>            sts_serial|   8|    100000|     100|0.91548813|  PASSED
>            sts_serial|   9|    100000|     100|0.56116112|  PASSED
>            sts_serial|   9|    100000|     100|0.26976493|  PASSED
>            sts_serial|  10|    100000|     100|0.99302499|  PASSED
>            sts_serial|  10|    100000|     100|0.92480782|  PASSED
>            sts_serial|  11|    100000|     100|0.47650760|  PASSED
>            sts_serial|  11|    100000|     100|0.55346947|  PASSED
>            sts_serial|  12|    100000|     100|0.48281485|  PASSED
>            sts_serial|  12|    100000|     100|0.90786163|  PASSED
>            sts_serial|  13|    100000|     100|0.82035110|  PASSED
>            sts_serial|  13|    100000|     100|0.13517163|  PASSED
>            sts_serial|  14|    100000|     100|0.31478814|  PASSED
>            sts_serial|  14|    100000|     100|0.88822447|  PASSED
>            sts_serial|  15|    100000|     100|0.93250540|  PASSED
>            sts_serial|  15|    100000|     100|0.91138743|  PASSED
>            sts_serial|  16|    100000|     100|0.73854300|  PASSED
>            sts_serial|  16|    100000|     100|0.81083225|  PASSED
>           rgb_bitdist|   1|    100000|     100|0.72719626|  PASSED
>           rgb_bitdist|   2|    100000|     100|0.93691348|  PASSED
>           rgb_bitdist|   3|    100000|     100|0.18604901|  PASSED
>           rgb_bitdist|   4|    100000|     100|0.64526907|  PASSED
>           rgb_bitdist|   5|    100000|     100|0.59249432|  PASSED
>           rgb_bitdist|   6|    100000|     100|0.01985167|  PASSED
>           rgb_bitdist|   7|    100000|     100|0.06514585|  PASSED
>           rgb_bitdist|   8|    100000|     100|0.91399224|  PASSED
>           rgb_bitdist|   9|    100000|     100|0.99417786|  PASSED
>           rgb_bitdist|  10|    100000|     100|0.97776699|  PASSED
>           rgb_bitdist|  11|    100000|     100|0.92253224|  PASSED
>           rgb_bitdist|  12|    100000|     100|0.25547479|  PASSED
> rgb_minimum_distance|   2|     10000|    1000|0.91009966|  PASSED
> rgb_minimum_distance|   3|     10000|    1000|0.73734969|  PASSED
> rgb_minimum_distance|   4|     10000|    1000|0.85031722|  PASSED
> rgb_minimum_distance|   5|     10000|    1000|0.35292577|  PASSED
>      rgb_permutations|   2|    100000|     100|0.29121818|  PASSED
>      rgb_permutations|   3|    100000|     100|0.53520639|  PASSED
>      rgb_permutations|   4|    100000|     100|0.59759367|  PASSED
>      rgb_permutations|   5|    100000|     100|0.67877434|  PASSED
>        rgb_lagged_sum|   0|   1000000|     100|0.53025611|  PASSED
>        rgb_lagged_sum|   1|   1000000|     100|0.74217461|  PASSED
>        rgb_lagged_sum|   2|   1000000|     100|0.44188940|  PASSED
>        rgb_lagged_sum|   3|   1000000|     100|0.98366582|  PASSED
>        rgb_lagged_sum|   4|   1000000|     100|0.12716740|  PASSED
>        rgb_lagged_sum|   5|   1000000|     100|0.82870033|  PASSED
>        rgb_lagged_sum|   6|   1000000|     100|0.31197970|  PASSED
>        rgb_lagged_sum|   7|   1000000|     100|0.44222349|  PASSED
>        rgb_lagged_sum|   8|   1000000|     100|0.65016349|  PASSED
>        rgb_lagged_sum|   9|   1000000|     100|0.42219150|  PASSED
>        rgb_lagged_sum|  10|   1000000|     100|0.03289626|  PASSED
>        rgb_lagged_sum|  11|   1000000|     100|0.76327010|  PASSED
>        rgb_lagged_sum|  12|   1000000|     100|0.21382043|  PASSED
>        rgb_lagged_sum|  13|   1000000|     100|0.54124553|  PASSED
>        rgb_lagged_sum|  14|   1000000|     100|0.54840601|  PASSED
>        rgb_lagged_sum|  15|   1000000|     100|0.95144366|  PASSED
>        rgb_lagged_sum|  16|   1000000|     100|0.57875067|  PASSED
>        rgb_lagged_sum|  17|   1000000|     100|0.26797763|  PASSED
>        rgb_lagged_sum|  18|   1000000|     100|0.61279375|  PASSED
>        rgb_lagged_sum|  19|   1000000|     100|0.19651207|  PASSED
>        rgb_lagged_sum|  20|   1000000|     100|0.99754365|   WEAK
>        rgb_lagged_sum|  21|   1000000|     100|0.85992946|  PASSED
>        rgb_lagged_sum|  22|   1000000|     100|0.96712183|  PASSED
>        rgb_lagged_sum|  23|   1000000|     100|0.78984908|  PASSED
>        rgb_lagged_sum|  24|   1000000|     100|0.94581764|  PASSED
>        rgb_lagged_sum|  25|   1000000|     100|0.84923534|  PASSED
>        rgb_lagged_sum|  26|   1000000|     100|0.60466386|  PASSED
>        rgb_lagged_sum|  27|   1000000|     100|0.51847730|  PASSED
>        rgb_lagged_sum|  28|   1000000|     100|0.29667891|  PASSED
>        rgb_lagged_sum|  29|   1000000|     100|0.82154321|  PASSED
>        rgb_lagged_sum|  30|   1000000|     100|0.93171252|  PASSED
>        rgb_lagged_sum|  31|   1000000|     100|0.22916095|  PASSED
>        rgb_lagged_sum|  32|   1000000|     100|0.99980698|   WEAK
>       rgb_kstest_test|   0|     10000|    1000|0.20101301|  PASSED
>       dab_bytedistrib|   0|  51200000|       1|0.78961457|  PASSED
>               dab_dct| 256|     50000|       1|0.48530283|  PASSED
> Preparing to run test 207.  ntuple = 0
>          dab_filltree|  32|  15000000|       1|0.78115681|  PASSED
>          dab_filltree|  32|  15000000|       1|0.13821354|  PASSED
> Preparing to run test 208.  ntuple = 0
>         dab_filltree2|   0|   5000000|       1|0.93311623|  PASSED
>         dab_filltree2|   1|   5000000|       1|0.65474810|  PASSED
> Preparing to run test 209.  ntuple = 0
>          dab_monobit2|  12|  65000000|       1|0.19217408|  PASSED
> real    22m14.535s
> user    22m14.225s
> sys     0m0.483s

  dieharder -a -g 13
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown 
       #
#=============================================================================#
    rng_name    |rands/second|   Seed   |
         mt19937|  1.20e+08  |3389389251|
#=============================================================================#
         test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
    diehard_birthdays|   0|       100|     100|0.29431631|  PASSED
       diehard_operm5|   0|   1000000|     100|0.52852446|  PASSED
   diehard_rank_32x32|   0|     40000|     100|0.84716060|  PASSED
     diehard_rank_6x8|   0|    100000|     100|0.92402355|  PASSED
    diehard_bitstream|   0|   2097152|     100|0.65596997|  PASSED
         diehard_opso|   0|   2097152|     100|0.10454289|  PASSED
         diehard_oqso|   0|   2097152|     100|0.20601502|  PASSED
          diehard_dna|   0|   2097152|     100|0.71763751|  PASSED
diehard_count_1s_str|   0|    256000|     100|0.99110221|  PASSED
diehard_count_1s_byt|   0|    256000|     100|0.73283511|  PASSED
  diehard_parking_lot|   0|     12000|     100|0.31589220|  PASSED
     diehard_2dsphere|   2|      8000|     100|0.34651926|  PASSED
     diehard_3dsphere|   3|      4000|     100|0.10358450|  PASSED
      diehard_squeeze|   0|    100000|     100|0.35205940|  PASSED
         diehard_sums|   0|       100|     100|0.53472165|  PASSED
         diehard_runs|   0|    100000|     100|0.30456011|  PASSED
         diehard_runs|   0|    100000|     100|0.23640156|  PASSED
        diehard_craps|   0|    200000|     100|0.16184900|  PASSED
        diehard_craps|   0|    200000|     100|0.26037895|  PASSED
  marsaglia_tsang_gcd|   0|  10000000|     100|0.02645337|  PASSED
  marsaglia_tsang_gcd|   0|  10000000|     100|0.48343973|  PASSED
          sts_monobit|   1|    100000|     100|0.11213467|  PASSED
             sts_runs|   2|    100000|     100|0.85522943|  PASSED
           sts_serial|   1|    100000|     100|0.46255006|  PASSED
           sts_serial|   2|    100000|     100|0.75340395|  PASSED
           sts_serial|   3|    100000|     100|0.74012431|  PASSED
           sts_serial|   3|    100000|     100|0.64802213|  PASSED
           sts_serial|   4|    100000|     100|0.21830449|  PASSED
           sts_serial|   4|    100000|     100|0.39248333|  PASSED
           sts_serial|   5|    100000|     100|0.86123193|  PASSED
           sts_serial|   5|    100000|     100|0.61874413|  PASSED
           sts_serial|   6|    100000|     100|0.65706113|  PASSED
           sts_serial|   6|    100000|     100|0.89753729|  PASSED
           sts_serial|   7|    100000|     100|0.95167417|  PASSED
           sts_serial|   7|    100000|     100|0.50544957|  PASSED
           sts_serial|   8|    100000|     100|0.82968642|  PASSED
           sts_serial|   8|    100000|     100|0.65847991|  PASSED
           sts_serial|   9|    100000|     100|0.43930807|  PASSED
           sts_serial|   9|    100000|     100|0.41935084|  PASSED
           sts_serial|  10|    100000|     100|0.84969566|  PASSED
           sts_serial|  10|    100000|     100|0.36131997|  PASSED
           sts_serial|  11|    100000|     100|0.66493478|  PASSED
           sts_serial|  11|    100000|     100|0.99606922|   WEAK
           sts_serial|  12|    100000|     100|0.76735296|  PASSED
           sts_serial|  12|    100000|     100|0.61220712|  PASSED
           sts_serial|  13|    100000|     100|0.46114011|  PASSED
           sts_serial|  13|    100000|     100|0.67763653|  PASSED
           sts_serial|  14|    100000|     100|0.98469397|  PASSED
           sts_serial|  14|    100000|     100|0.99572737|   WEAK
           sts_serial|  15|    100000|     100|0.41716299|  PASSED
           sts_serial|  15|    100000|     100|0.68498938|  PASSED
           sts_serial|  16|    100000|     100|0.93368143|  PASSED
           sts_serial|  16|    100000|     100|0.92807695|  PASSED
          rgb_bitdist|   1|    100000|     100|0.93771832|  PASSED
          rgb_bitdist|   2|    100000|     100|0.68214844|  PASSED
          rgb_bitdist|   3|    100000|     100|0.56893339|  PASSED
          rgb_bitdist|   4|    100000|     100|0.25185135|  PASSED
          rgb_bitdist|   5|    100000|     100|0.89317515|  PASSED
          rgb_bitdist|   6|    100000|     100|0.22389075|  PASSED
          rgb_bitdist|   7|    100000|     100|0.44196303|  PASSED
          rgb_bitdist|   8|    100000|     100|0.87221049|  PASSED
          rgb_bitdist|   9|    100000|     100|0.51131770|  PASSED
          rgb_bitdist|  10|    100000|     100|0.74745750|  PASSED
          rgb_bitdist|  11|    100000|     100|0.92022722|  PASSED
          rgb_bitdist|  12|    100000|     100|0.15886948|  PASSED
rgb_minimum_distance|   2|     10000|    1000|0.59925968|  PASSED
rgb_minimum_distance|   3|     10000|    1000|0.10664896|  PASSED
rgb_minimum_distance|   4|     10000|    1000|0.24903973|  PASSED
rgb_minimum_distance|   5|     10000|    1000|0.35460780|  PASSED
     rgb_permutations|   2|    100000|     100|0.60358548|  PASSED
     rgb_permutations|   3|    100000|     100|0.94930425|  PASSED
     rgb_permutations|   4|    100000|     100|0.81455671|  PASSED
     rgb_permutations|   5|    100000|     100|0.80992233|  PASSED
       rgb_lagged_sum|   0|   1000000|     100|0.03095645|  PASSED
       rgb_lagged_sum|   1|   1000000|     100|0.41475495|  PASSED
       rgb_lagged_sum|   2|   1000000|     100|0.89297345|  PASSED
       rgb_lagged_sum|   3|   1000000|     100|0.22818264|  PASSED
       rgb_lagged_sum|   4|   1000000|     100|0.95220356|  PASSED
       rgb_lagged_sum|   5|   1000000|     100|0.63110540|  PASSED
       rgb_lagged_sum|   6|   1000000|     100|0.07956616|  PASSED
       rgb_lagged_sum|   7|   1000000|     100|0.24377151|  PASSED
       rgb_lagged_sum|   8|   1000000|     100|0.64125810|  PASSED
       rgb_lagged_sum|   9|   1000000|     100|0.86957099|  PASSED
       rgb_lagged_sum|  10|   1000000|     100|0.28253580|  PASSED
       rgb_lagged_sum|  11|   1000000|     100|0.77707396|  PASSED
       rgb_lagged_sum|  12|   1000000|     100|0.67356797|  PASSED
       rgb_lagged_sum|  13|   1000000|     100|0.07881472|  PASSED
       rgb_lagged_sum|  14|   1000000|     100|0.10315234|  PASSED
       rgb_lagged_sum|  15|   1000000|     100|0.03495259|  PASSED
       rgb_lagged_sum|  16|   1000000|     100|0.16978017|  PASSED
       rgb_lagged_sum|  17|   1000000|     100|0.64497427|  PASSED
       rgb_lagged_sum|  18|   1000000|     100|0.67237869|  PASSED
       rgb_lagged_sum|  19|   1000000|     100|0.20997107|  PASSED
       rgb_lagged_sum|  20|   1000000|     100|0.74424383|  PASSED
       rgb_lagged_sum|  21|   1000000|     100|0.87217900|  PASSED
       rgb_lagged_sum|  22|   1000000|     100|0.70543788|  PASSED
       rgb_lagged_sum|  23|   1000000|     100|0.29904382|  PASSED
       rgb_lagged_sum|  24|   1000000|     100|0.93595050|  PASSED
       rgb_lagged_sum|  25|   1000000|     100|0.51552109|  PASSED
       rgb_lagged_sum|  26|   1000000|     100|0.46841470|  PASSED
       rgb_lagged_sum|  27|   1000000|     100|0.04353906|  PASSED
       rgb_lagged_sum|  28|   1000000|     100|0.75034974|  PASSED
       rgb_lagged_sum|  29|   1000000|     100|0.80908354|  PASSED
       rgb_lagged_sum|  30|   1000000|     100|0.80537450|  PASSED
       rgb_lagged_sum|  31|   1000000|     100|0.87876817|  PASSED
       rgb_lagged_sum|  32|   1000000|     100|0.23748967|  PASSED
      rgb_kstest_test|   0|     10000|    1000|0.60345857|  PASSED
      dab_bytedistrib|   0|  51200000|       1|0.22093090|  PASSED
              dab_dct| 256|     50000|       1|0.58230667|  PASSED
Preparing to run test 207.  ntuple = 0
         dab_filltree|  32|  15000000|       1|0.91629307|  PASSED
         dab_filltree|  32|  15000000|       1|0.64112376|  PASSED
Preparing to run test 208.  ntuple = 0
        dab_filltree2|   0|   5000000|       1|0.79624950|  PASSED
        dab_filltree2|   1|   5000000|       1|0.85580538|  PASSED
Preparing to run test 209.  ntuple = 0
         dab_monobit2|  12|  65000000|       1|0.57050186|  PASSED
Re: test randomizacyjny w C
#308708
Author: M.M.
Date: Wed, 06 Jul 2016 13:19
23 lines
2397 bytes
On Tuesday, July 5, 2016 at 3:50:55 PM UTC+2, bartekltg wrote:
> On 05.07.2016 10:13, M.M. wrote:
> 
> >> Ciekawe, moze cos dobrego masz :-)
> > Nic rewelacyjnego, mam złożenie dwóch generatorów fibbonaciego. Jest
> > bardzo szybki, ma duży stan, a że przechodzi testy kryptograficzne - to
> > jestem zaskoczony.
> 
> Zwiększ parametry w dieharder.

Zwiększyłem parametr m (multipel) razy 10:
time dieharder -a -m 10
http://pastebin.com/fE2ahfHD

O ile rozumiem, ilość danych wydłużyła się 10 razy. Czas wydłużył się
do 225 minut, czyli około 10 razy. Niektóre testy też zaliczył słabo.

Nie wiem czy dobrze rozumiem tę kolumnę p. Czy to jest analiza
przedziałowa? Bierze teoretyczną dystrybuantę rozkładu równomiernego
i np. wartości 0.01 i 0.99 oznaczają, że mniej niż 1% ciągów by 
tak źle zaliczyło test? Czyli optymalnie powinno być w okolicach 0.5?

Pozdrawiam
Re: test randomizacyjny w C
#308709
Author: M.M.
Date: Thu, 07 Jul 2016 16:27
66 lines
5284 bytes
On Wednesday, July 6, 2016 at 3:19:13 PM UTC+2, M.M. wrote:
> On Tuesday, July 5, 2016 at 3:50:55 PM UTC+2, bartekltg wrote:
> > On 05.07.2016 10:13, M.M. wrote:
> > 
> > >> Ciekawe, moze cos dobrego masz :-)
> > > Nic rewelacyjnego, mam złożenie dwóch generatorów fibbonaciego. Jest
> > > bardzo szybki, ma duży stan, a że przechodzi testy kryptograficzne - to
> > > jestem zaskoczony.
> > 
> > Zwiększ parametry w dieharder.
> 
> Zwiększyłem parametr m (multipel) razy 10:
> time dieharder -a -m 10
> http://pastebin.com/fE2ahfHD
> 
> O ile rozumiem, ilość danych wydłużyła się 10 razy. Czas wydłużył się
> do 225 minut, czyli około 10 razy. Niektóre testy też zaliczył słabo.
> 
> Nie wiem czy dobrze rozumiem tę kolumnę p. Czy to jest analiza
> przedziałowa? Bierze teoretyczną dystrybuantę rozkładu równomiernego
> i np. wartości 0.01 i 0.99 oznaczają, że mniej niż 1% ciągów by 
> tak źle zaliczyło test? Czyli optymalnie powinno być w okolicach 0.5?
> 
> Pozdrawiam

Mój generator też odpaliłem z opcją -m 10. Przeszedł testy gorzej, a
jeden zawalił. Zawalił test sumy, ciekawe czemu o tym teście piszą
żeby go nie używać?

https://www.phy.duke.edu/~rgb/General/dieharder.php

#=============================================================================#
#          dieharder version 3.29.4beta Copyright 2003 Robert G. Brown        #
#=============================================================================#
Installed dieharder tests:
 Test Number                         Test Name                Test Reliability
===============================================================================
  -d 0                            Diehard Birthdays Test              Good
  -d 1                               Diehard OPERM5 Test           Suspect
  -d 2                    Diehard 32x32 Binary Rank Test              Good
  -d 3                      Diehard 6x8 Binary Rank Test              Good
  -d 4                            Diehard Bitstream Test              Good
  -d 5                                      Diehard OPSO              Good
  -d 6                                 Diehard OQSO Test              Good
  -d 7                                  Diehard DNA Test              Good
  -d 8                Diehard Count the 1s (stream) Test              Good
  -d 9                  Diehard Count the 1s Test (byte)              Good
  -d 10                         Diehard Parking Lot Test              Good
  -d 11         Diehard Minimum Distance (2d Circle) Test             Good
  -d 12         Diehard 3d Sphere (Minimum Distance) Test             Good
  -d 13                             Diehard Squeeze Test              Good
  -d 14                                Diehard Sums Test        Do Not Use
  -d 15                                Diehard Runs Test              Good
  -d 16                               Diehard Craps Test              Good
  -d 17                     Marsaglia and Tsang GCD Test              Good
  -d 100                                STS Monobit Test              Good
  -d 101                                   STS Runs Test              Good
  -d 102                   STS Serial Test (Generalized)              Good
  -d 200                       RGB Bit Distribution Test              Good
  -d 201           RGB Generalized Minimum Distance Test              Good
  -d 202                           RGB Permutations Test              Good
  -d 203                             RGB Lagged Sum Test              Good
  -d 204                RGB Kolmogorov-Smirnov Test Test              Good


Pozdrawiam
Re: test randomizacyjny w C
#308710
Author: bartekltg
Date: Thu, 07 Jul 2016 22:49
111 lines
5468 bytes
On 07.07.2016 18:27, M.M. wrote:
> On Wednesday, July 6, 2016 at 3:19:13 PM UTC+2, M.M. wrote:
>> On Tuesday, July 5, 2016 at 3:50:55 PM UTC+2, bartekltg wrote:
>>> On 05.07.2016 10:13, M.M. wrote:
>>>
>>>>> Ciekawe, moze cos dobrego masz :-)
>>>> Nic rewelacyjnego, mam złożenie dwóch generatorów fibbonaciego. Jest
>>>> bardzo szybki, ma duży stan, a że przechodzi testy kryptograficzne - to
>>>> jestem zaskoczony.
>>>
>>> Zwiększ parametry w dieharder.
>>
>> Zwiększyłem parametr m (multipel) razy 10:
>> time dieharder -a -m 10
>> http://pastebin.com/fE2ahfHD
>>
>> O ile rozumiem, ilość danych wydłużyła się 10 razy. Czas wydłużył się
>> do 225 minut, czyli około 10 razy. Niektóre testy też zaliczył słabo.
>>
>> Nie wiem czy dobrze rozumiem tę kolumnę p. Czy to jest analiza
>> przedziałowa?


> > Bierze teoretyczną dystrybuantę rozkładu równomiernego
>> i np. wartości 0.01 i 0.99 oznaczają, że mniej niż 1% ciągów by
>> tak źle zaliczyło test?


Liczysz test 100 (1000)razy. Wynik ma rozkjłąd normalny
o zadanym odchyleniu. Dla każdego testu
p_i = erfc( |wynik-średnia|/(sqrt(2)sigma)  )

p_i też jest zmienną losową, o rozkłądzie jednostajnym.
jeśli jakiieś p_i = 10^-6 albo 1-10^-6, to jest to podejrzane,
ale w normalnym przypadku dostajesz po prostu 100(1000 liczb).

Następnie odpalają oni test Kołmogorowa-Smirnowa (patrzą na maksimum
różnicy miedzy teoretyczną dystrybuantą a dystrybuantą empiryczną).

Wyświetlany wynik to p-value _tego testu_. Prawdopodobieństwo(*patrz 
dalej), że maksymalny dystand z testu KS jest traki lub większy, przy
załozeniu hipotezy o jednorodnym rozkłądzie p_i.


 > Czyli optymalnie powinno być w okolicach 0.5?

Nie. To p-value ma też rozkład jednostajny (przy załozeniu
losowości). 0.4-0.6 jest tak samo przawdopodobne jak 0.0-0.2.

Należy to rozumieć jak zabawę w weryfikowanie hipotez
(standard: H0 - ciag był losowy przeciw H1 - nie był).
To, że dostaniemy p = 0.1, 0.5 czy 0.9 jest równie dobre,
Problem jest jeśli dostaniemy np p=0.001, bo to oznacza, że
takie albo większe odchylenie (w teścei KS) moglibyśmy dostać
przypadkowo z prawdopodobieństwem 0.001. To mocna przesłanka do 
odrzucenia H0.
0.1, 0.5 czy 0.9 nie należy widzieć jako 'oj, to tylko 10% sanszy'
(odnośćnie *), tylko jako 'na razie wszytko w porządku'.

BTW, jak się obawisz, żę za często widzisz wtniki postaci 0.5, zawsze
możesz wejść pozim wyzej, wygenerwać ich 100 i sprawdzić, czy równo
rozkładają się na [0,1] :)




Jednak nie wszystkie testy z zestawy dokłądnie tak działąją.

Naprawdę polecam jednak samemu przeczytać pierwszy roxzdizł
w manualu (tym pdfie na 132str).



>>
>> Pozdrawiam
>
> Mój generator też odpaliłem z opcją -m 10. Przeszedł testy gorzej, a
> jeden zawalił. Zawalił test sumy, ciekawe czemu o tym teście piszą
> żeby go nie używać?

https://sites.google.com/site/astudyofentropy/background-information/the-tests/dieharder-test-descriptions#T014

14 - Sums Test

Integers are floated to get a sequence U(1),U(2),... of uniform [0,1) 
variables.  Then overlapping sums, S(1)=U(1)+...+U(100), 
S2=U(2)+...+U(101),... are formed. The S's are virtually normal with a 
certain covariance matrix.  A linear transformation of the S's converts 
them to a sequence of independent standard normals, which are converted 
to uniform variables for a KSTEST. The  p-values from ten KSTESTs are 
given still another KSTEST.

Comments

At this point I think there is rock solid evidence that this test is 
completely useless in every sense of the word. It is broken, and it is 
so broken that there is no point in trying to fix it.  The problem is 
that the transformation above is not linear, and doesn't work. Don't use 
it.

For what it is worth, rgb_lagged_sums with ntuple 0 tests for exactly 
the same thing, but scalably and reliably without the complication of 
overlapping samples and covariance. Use it instead.


Nie jest to zbut wyczerpujące wyjaśnienie, ale sedno jest:
test jest zepsuty.


pzdr
bartekltg
Re: test randomizacyjny w C
#308711
Author: Borneq
Date: Sun, 25 Sep 2016 12:48
14 lines
1601 bytes
W dniu 05.07.2016 o 15:50, bartekltg pisze:
> Zwiększ parametry w dieharder.

W dniu 25.09.2016 o 14:20, bartekltg pisze:
 > BTW, zerknij na wątek
 > "test randomizacyjny w C"
 > z lipca na grupie grupy pl.comp.c
 >
 > Zaczęło się od pytania o zadanie domowe, ale ostetecznie
 > padło trochę ciekawych informacji linków;>


Ciekawy test to test urodzinowy. Nie przechodzą go zwykłe generatory 
Fibonacciego z odejmowaniem modulo.
Re: test randomizacyjny w C
#308712
Author: Borneq
Date: Sun, 25 Sep 2016 12:59
8 lines
1579 bytes
W dniu 25.09.2016 o 14:48, Borneq pisze:
> Ciekawy test to test urodzinowy. Nie przechodzą go zwykłe generatory
> Fibonacciego z odejmowaniem modulo.

W teście Birthday Spacings bierze się odstępy między urodzinami i bada 
ile wypada w ten sam "dzień". A może by badać kolejno jeszcze odstępy 
między odstępami itd między nimi aż do dziesiątego stopnia? Czy to było 
by dobrym testem?
Re: test randomizacyjny w C
#308713
Author: Borneq
Date: Mon, 26 Sep 2016 15:44
10 lines
1717 bytes
W dniu 05.07.2016 o 15:50, bartekltg pisze:
> Zwiększ parametry w dieharder.
	
Coś mi tu nie działa: rozpakowałem die-c.tar.gz i podłączyłem pliki do 
własnego projektu. Testuję na 10 megowym pliku ściągniętym z 
http://qrng.anu.edu.au/FAQ.php#api czyli fizycznie losowym.
Teraz wszystkie testy zwracają mi p-value = 0.000000. Co to oznacza? Nie 
pisze nigdzie "fail" czy "ok", czy zero oznacza że test przeszedł? a 
może odwrotnie? Tak samo p=0 nba pliku nie losowym czyli .pdf. Coś źle 
robię? Może inny format, ale ma być "unformatted"
Re: test randomizacyjny w C
#308714
Author: bartekltg
Date: Mon, 26 Sep 2016 16:18
100 lines
6343 bytes
On Monday, September 26, 2016 at 5:44:21 PM UTC+2, Borneq wrote:
> W dniu 05.07.2016 o 15:50, bartekltg pisze:
> > Zwiększ parametry w dieharder.
> 	
> Coś mi tu nie działa: rozpakowałem die-c.tar.gz i podłączyłem pliki do 

A to nie diehard? 
To staroć, którego nawet cięzko skompilować;]

sudo apt-get install dieharder 
;>

http://www.phy.duke.edu/~rgb/General/dieharder.php
Windowsowej wersji nie ma, ale sa źródła, pewnie
problemów z kompilowaniem nie będzie. 

> własnego projektu. Testuję na 10 megowym pliku ściągniętym z 
> http://qrng.anu.edu.au/FAQ.php#api czyli fizycznie losowym.
> Teraz wszystkie testy zwracają mi p-value = 0.000000. Co to oznacza? 

Testy oblane.

Coś zwaliłeś, bo nawet głupie 8MB z /dev/urandom przechodzi
testy na domyślnych ustawieniach. (siedze na wydziałowym, 
torrenty poblokowane, nie sciagne tamtych liczb).

$ dieharder -g 201 -f random10.dat  -a
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |           filename             |rands/second|
 file_input_raw|                    random10.dat|  4.09e+07  |
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
# The file file_input_raw was rewound 6 times
   diehard_birthdays|   0|       100|     100|0.49580044|  PASSED  
# The file file_input_raw was rewound 54 times
      diehard_operm5|   0|   1000000|     100|0.07929092|  PASSED  
# The file file_input_raw was rewound 115 times
  diehard_rank_32x32|   0|     40000|     100|0.01416670|  PASSED  
# The file file_input_raw was rewound 143 times
    diehard_rank_6x8|   0|    100000|     100|0.28938294|  PASSED  
# The file file_input_raw was rewound 156 times
   diehard_bitstream|   0|   2097152|     100|0.00000000|  FAILED  
# The file file_input_raw was rewound 256 times
        diehard_opso|   0|   2097152|     100|0.00000000|  FAILED  
# The file file_input_raw was rewound 323 times
        diehard_oqso|   0|   2097152|     100|0.00000000|  FAILED  
# The file file_input_raw was rewound 354 times
         diehard_dna|   0|   2097152|     100|0.64690035|  PASSED  
# The file file_input_raw was rewound 357 times
diehard_count_1s_str|   0|    256000|     100|0.38552182|  PASSED  
# The file file_input_raw was rewound 418 times
diehard_count_1s_byt|   0|    256000|     100|0.01806742|  PASSED  
# The file file_input_raw was rewound 419 times
 diehard_parking_lot|   0|     12000|     100|0.77995133|  PASSED  
# The file file_input_raw was rewound 420 times
    diehard_2dsphere|   2|      8000|     100|0.72504389|  PASSED  
# The file file_input_raw was rewound 420 times
    diehard_3dsphere|   3|      4000|     100|0.93521493|  PASSED  
# The file file_input_raw was rewound 530 times
     diehard_squeeze|   0|    100000|     100|0.00000000|  FAILED  
# The file file_input_raw was rewound 530 times
        diehard_sums|   0|       100|     100|0.81960649|  PASSED  
# The file file_input_raw was rewound 535 times
        diehard_runs|   0|    100000|     100|0.09559895|  PASSED  
        diehard_runs|   0|    100000|     100|0.00023909|   WEAK   
# The file file_input_raw was rewound 600 times
       diehard_craps|   0|    200000|     100|0.00203902|   WEAK   
       diehard_craps|   0|    200000|     100|0.00680016|  PASSED 
  
uwaga, 10Mb to mało. 100 to też mało
Gdy plik się skończy, czytany jest od początku, to pogarsza wyniki. 
Powinieneś o tym dostać informację na ekranie. 

Oczywiśćei, możesz sobie wybrać p i t na tyle małe, że 10Mb staraczy,
ale takie testy do co lepszy liniowy generator kongruencyjny przejdzie. 


> Nie 
> pisze nigdzie "fail" czy "ok", czy zero oznacza że test przeszedł? a 

To co pisze? Widzisz pare linijak wyżęj, wrzuciłem i linię poleceń,
którą uruchamiam program i to, co program wypluwa. 
Jeśli tego nie podajesz, mogę sobie tylko wróżyć. 


> może odwrotnie? Tak samo p=0 nba pliku nie losowym czyli .pdf. Coś źle 
> robię? Może inny format, ale ma być "unformatted"

Prawdopodobnie. Ale skąd mam to wiedzieć, skoro nie piszesz, co robisz:-)
Odradzam tez używania antycznych programów z lat 90tych, jeśli popełniasz
jakiś błąd w wywołaniu (a to mi się wróży) to nikt nie pomoże, bo mało
komu będzie się chciało z tymi antycznymi programami walczyć:) Z tego
co pamietam, nie moglem oryginalnego diehard na linuksie uruchomić 
or razu. 

pzdr
bartekltg
Re: test randomizacyjny w C
#308715
Author: Borneq
Date: Mon, 26 Sep 2016 16:27
8 lines
1561 bytes
W dniu 26.09.2016 o 18:18, bartekltg pisze:
> A to nie diehard?
> To staroć, którego nawet cięzko skompilować;]
>
> sudo apt-get install dieharder

Próbuję dieharder pod Windows i Visualem ale zależny od biblioteki GSL. 
Nie kompiluje się. Ale zobaczę pod Linuxem ;-)
Re: test randomizacyjny w C
#308716
Author: Borneq
Date: Mon, 26 Sep 2016 16:44
14 lines
1880 bytes
W dniu 26.09.2016 o 18:27, Borneq pisze:
> W dniu 26.09.2016 o 18:18, bartekltg pisze:
>> A to nie diehard?
>> To staroć, którego nawet cięzko skompilować;]
>>
>> sudo apt-get install dieharder
>
> Próbuję dieharder pod Windows i Visualem ale zależny od biblioteki GSL.
> Nie kompiluje się. Ale zobaczę pod Linuxem ;-)
>
Robię, wszystkie testy przechodzi, tylko pierwszy Birthday jest weak, co 
znaczy że potem będę musiał go jeszcze raz wykonać?
Muszę się wczytać w parametry, jest tam coś takiego jak struktura? Aby 
rozróżnić czy liczby są 24 czy np. 32 bitowe jedna za drugą.
Re: test randomizacyjny w C
#308717
Author: Borneq
Date: Mon, 26 Sep 2016 18:57
23 lines
2098 bytes
W dniu 26.09.2016 o 18:44, Borneq pisze:
> W dniu 26.09.2016 o 18:27, Borneq pisze:
>> W dniu 26.09.2016 o 18:18, bartekltg pisze:
>>> A to nie diehard?
>>> To staroć, którego nawet cięzko skompilować;]
>>>
>>> sudo apt-get install dieharder
>>
>> Próbuję dieharder pod Windows i Visualem ale zależny od biblioteki GSL.
>> Nie kompiluje się. Ale zobaczę pod Linuxem ;-)
>>

Coś mi tu nie pasuje:
dieharder -f fibtest.cpp -a^C

najpierw pokazuje
    rng_name    |           filename             |rands/second|
         mt19937|                     fibtest.cpp|  6.34e+07  |

tak jakby brał jakiś generator mt19937
potem celowo zamiast pliku binarnego dałem zupełnie nielosowy i mały 
pliczek w C++. Po pierwsze: i tak powoli testuje, po drugie: przechodzi 
testy.
Re: test randomizacyjny w C
#308718
Author: bartekltg
Date: Mon, 26 Sep 2016 19:36
43 lines
2848 bytes
On 26.09.2016 20:57, Borneq wrote:
> W dniu 26.09.2016 o 18:44, Borneq pisze:
>> W dniu 26.09.2016 o 18:27, Borneq pisze:
>>> W dniu 26.09.2016 o 18:18, bartekltg pisze:
>>>> A to nie diehard?
>>>> To staroć, którego nawet cięzko skompilować;]
>>>>
>>>> sudo apt-get install dieharder
>>>
>>> Próbuję dieharder pod Windows i Visualem ale zależny od biblioteki GSL.
>>> Nie kompiluje się. Ale zobaczę pod Linuxem ;-)
>>>
>
> Coś mi tu nie pasuje:
> dieharder -f fibtest.cpp -a^C
>
> najpierw pokazuje
>    rng_name    |           filename             |rands/second|
>         mt19937|                     fibtest.cpp|  6.34e+07  |

> tak jakby brał jakiś generator mt19937
> potem celowo zamiast pliku binarnego dałem zupełnie nielosowy i mały
> pliczek w C++. Po pierwsze: i tak powoli testuje, po drugie: przechodzi
> testy.

Nie, nie przechodzi testów; mt19937 przechodzi testy;p

Rozumiem, że nie chce ci się czytać dokumentacji.
Nic taką metodą nie zdziałasz, ale rozumiem niechęć:-)

Ale dlaczego nie zerżnąłeś polecenia z mojego poprzedniego posta:
dieharder -g 201 -f random10.dat  -a
to nie rozumiem;-)

I nie, losowo wybrany pliczek tekstowy nie przechodzi u mnie testów.

BTW, torrent na 1GB zasuwa z oszłamiającą prędkością 8kb/s :(
Rozumiem, żę nia chcą tracić pieniędzy na wielkie łacze, ale to
jednak lekka przesada;>
Na dropboxa czy inne googledrive by wrzucili, byłoby lepiej ;-)

pzdr
bartekltg
Re: test randomizacyjny w C
#308719
Author: Borneq
Date: Mon, 26 Sep 2016 20:07
16 lines
2160 bytes
W dniu 26.09.2016 o 21:36, bartekltg pisze:
> Ale dlaczego nie zerżnąłeś polecenia z mojego poprzedniego posta:
> dieharder -g 201 -f random10.dat  -a
> to nie rozumiem;-)

zrobię
> BTW, torrent na 1GB zasuwa z oszłamiającą prędkością 8kb/s :(
> Rozumiem, żę nia chcą tracić pieniędzy na wielkie łacze, ale to

1GB ma za mało pewnie userów, ja ściągnąłem 10 mega i 100 mega, czy sto 
mega będzie wolniej obrabiany w testach niż 10?
Zastanawiam się jak on też testuje: czy bierze kolejne bajty czy też 
losowo skacze do różnych. Gdyby skakał, nie zbadał by zależności: ktoś 
mógłby dać kolejne bity 0 i 1 i nie wykrył by tego. Ale gdyby bral po 
kolei to następne wywołanie było by takie same, jak by było WEAK to 
następne też WEAK.
Re: test randomizacyjny w C
#308720
Author: Borneq
Date: Mon, 26 Sep 2016 20:33
7 lines
1733 bytes
W dniu 26.09.2016 o 21:36, bartekltg pisze:
> Nie, nie przechodzi testów; mt19937 przechodzi testy;p
> dieharder -g 201 -f random10.dat  -a

Ranlux w każdej wersji LUX nie przechodzi diehard_operm5, co więcej - 
fizyczny random nie przechodzi diehard_opso, podczas gdy mt19937 
przechodzi wszystkie ? Myślałem że Ranlux lepiej się spisuje niż mt19937.
Re: test randomizacyjny w C
#308721
Author: Borneq
Date: Mon, 26 Sep 2016 20:57
13 lines
2040 bytes
W dniu 26.09.2016 o 22:33, Borneq pisze:
> W dniu 26.09.2016 o 21:36, bartekltg pisze:
>> Nie, nie przechodzi testów; mt19937 przechodzi testy;p
>> dieharder -g 201 -f random10.dat  -a
>
> Ranlux w każdej wersji LUX nie przechodzi diehard_operm5, co więcej -
> fizyczny random nie przechodzi diehard_opso, podczas gdy mt19937
> przechodzi wszystkie ? Myślałem że Ranlux lepiej się spisuje niż mt19937.
>
>
Zauważyłem, że pliki przewijane są wiele razy. Z tego wynikało by że 
pierwszy test potrzebuje pliku 50 mega, a drugi aż 400 mega. Tylko czy 
to nie zwolni? Ale skoro i tak w kółko się powtarza plik...
Re: test randomizacyjny w C
#308722
Author: M.M.
Date: Mon, 26 Sep 2016 21:22
19 lines
2602 bytes
On Monday, September 26, 2016 at 10:57:37 PM UTC+2, Borneq wrote:
> W dniu 26.09.2016 o 22:33, Borneq pisze:
> > W dniu 26.09.2016 o 21:36, bartekltg pisze:
> >> Nie, nie przechodzi testów; mt19937 przechodzi testy;p
> >> dieharder -g 201 -f random10.dat  -a
> >
> > Ranlux w każdej wersji LUX nie przechodzi diehard_operm5, co więcej -
> > fizyczny random nie przechodzi diehard_opso, podczas gdy mt19937
> > przechodzi wszystkie ? Myślałem że Ranlux lepiej się spisuje niż mt19937.
> >
> >
> Zauważyłem, że pliki przewijane są wiele razy. Z tego wynikało by że 
> pierwszy test potrzebuje pliku 50 mega, a drugi aż 400 mega. Tylko czy 
> to nie zwolni? Ale skoro i tak w kółko się powtarza plik...

A jakby połączyć bezpośrednio z generatorem przez pipe? Bez męczenia łącza i
dysku ogromnymi plikami? 

Pozdrawiam
Re: test randomizacyjny w C
#308723
Author: Borneq
Date: Mon, 26 Sep 2016 21:32
7 lines
1891 bytes
W dniu 26.09.2016 o 23:22, M.M. pisze:
> A jakby połączyć bezpośrednio z generatorem przez pipe? Bez męczenia łącza i
> dysku ogromnymi plikami?

W tester wbudowane są różne przykładowe generatory z GSL. Generowanie do 
pliku najwyżej w przypadku niestandardowym. Ale to nie problem, mam na 
dysku SSD, problemem jest długie działanie testerów.
Re: test randomizacyjny w C
#308727
Author: bartekltg
Date: Mon, 26 Sep 2016 21:39
25 lines
2454 bytes
On 26.09.2016 23:32, Borneq wrote:
> W dniu 26.09.2016 o 23:22, M.M. pisze:
>> A jakby połączyć bezpośrednio z generatorem przez pipe? Bez męczenia
>> łącza i
>> dysku ogromnymi plikami?
>
> W tester wbudowane są różne przykładowe generatory z GSL. Generowanie do
> pliku najwyżej w przypadku niestandardowym. Ale to nie problem, mam na
> dysku SSD, problemem jest długie działanie testerów.
>

Długie działanie testów?
Jak ostatnio puszczałem symulacje MC to szarpały się dwa tygodnie
na 48 rdzeniach. >50% czasu szło na generowanie liczb losowych.

I chce mieć jakieś przesłanki by wierzyc, że nawet tak długi ciąg nadal
ma statystyczne własności liczb losowych i że moja całeczka wyjdzie
z dokąłdnością do tych 6 miejsc po przecinku. Testy działajace w sekundę
to trochę mało ;-)


[ok, nabijam się trochę, i tak używałem MT ;-)]

pzdr
bartekltg
Re: test randomizacyjny w C
#308724
Author: M.M.
Date: Mon, 26 Sep 2016 21:46
44 lines
4528 bytes
On Monday, September 26, 2016 at 11:32:09 PM UTC+2, Borneq wrote:
> W dniu 26.09.2016 o 23:22, M.M. pisze:
> > A jakby połączyć bezpośrednio z generatorem przez pipe? Bez męczenia łącza i
> > dysku ogromnymi plikami?
> 
> W tester wbudowane są różne przykładowe generatory z GSL. Generowanie do 
> pliku najwyżej w przypadku niestandardowym. Ale to nie problem, mam na 
> dysku SSD, problemem jest długie działanie testerów.

Czyli byś chciał dobry test który działa w krótkim czasie. Obawiam się, że
to wymusza testowanie na krótkim ciągu liczb pseudolosowym. Może minutę
temu włączyłem u siebie diehardera, zobacz ile już przetestował:

./rnd | dieharder -a -g 200
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
stdin_input_raw|  3.42e+07  |2135896386|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.52531594|  PASSED  
      diehard_operm5|   0|   1000000|     100|0.88766999|  PASSED  
  diehard_rank_32x32|   0|     40000|     100|0.03233666|  PASSED  
    diehard_rank_6x8|   0|    100000|     100|0.29721444|  PASSED  
   diehard_bitstream|   0|   2097152|     100|0.34918380|  PASSED  
        diehard_opso|   0|   2097152|     100|0.50657945|  PASSED  
        diehard_oqso|   0|   2097152|     100|0.88860585|  PASSED  
         diehard_dna|   0|   2097152|     100|0.05853630|  PASSED  
diehard_count_1s_str|   0|    256000|     100|0.80996803|  PASSED  
diehard_count_1s_byt|   0|    256000|     100|0.08162491|  PASSED  
 diehard_parking_lot|   0|     12000|     100|0.98287267|  PASSED  
    diehard_2dsphere|   2|      8000|     100|0.14004802|  PASSED  
    diehard_3dsphere|   3|      4000|     100|0.62339373|  PASSED  
     diehard_squeeze|   0|    100000|     100|0.87961146|  PASSED  
        diehard_sums|   0|       100|     100|0.14747688|  PASSED  
        diehard_runs|   0|    100000|     100|0.41225423|  PASSED  
        diehard_runs|   0|    100000|     100|0.96926418|  PASSED  
       diehard_craps|   0|    200000|     100|0.83187785|  PASSED  
       diehard_craps|   0|    200000|     100|0.97190438|  PASSED  

Testy są szybkie, ale jak chcesz przetestować bardzo dużo danych, to siła
wyższa.
Re: test randomizacyjny w C
#308725
Author: Borneq
Date: Mon, 26 Sep 2016 21:54
3 lines
1740 bytes
W dniu 26.09.2016 o 23:46, M.M. pisze:
> ./rnd | dieharder -a -g 200
A gdzie jest to ./rnd ? o jakiś program wypluwający na stdout?
Re: test randomizacyjny w C
#308726
Author: M.M.
Date: Mon, 26 Sep 2016 21:59
7 lines
2254 bytes
On Monday, September 26, 2016 at 11:54:20 PM UTC+2, Borneq wrote:
> W dniu 26.09.2016 o 23:46, M.M. pisze:
> > ./rnd | dieharder -a -g 200
> A gdzie jest to ./rnd ? o jakiś program wypluwający na stdout?

To programik mojego autorstwa do generowania liczb losowych. Jest
w katalogu bieżącym.
Re: test randomizacyjny w C
#308728
Author: Borneq
Date: Tue, 27 Sep 2016 13:55
29 lines
3230 bytes
W dniu 26.09.2016 o 23:39, bartekltg pisze:
> I chce mieć jakieś przesłanki by wierzyc, że nawet tak długi ciąg nadal
> ma statystyczne własności liczb losowych i że moja całeczka wyjdzie
> z dokąłdnością do tych 6 miejsc po przecinku. Testy działajace w sekundę
> to trochę mało ;-)

Z czego wynika dobra chaotyczność RanLuxa? Na poziomie 0 działa jak 
algorytm o nazwie RCarry, poziom 1 to połowa wyników idzie do śmietnika: 
najpierw wypluwa 24 wyniki, potem opuszcza 24.
potem jest
level 2 (luxury=97)
level 3 (luxury=223)
level 4 (luxury=389)
opuszcza luxury-24. Liczby 97,223 i 389 przypuszcam dobrane 
nieprzypadkowo, nawet opuszczenie 200 działało by gorzej niż 223-24.
Chciałem zrobić RCarry do kwadratu, w którym RCarry byłby sterowany 
drugim RCarry.
Działał by w ten sposób, że drugi losował by liczbę z przedziału 1..32, 
pierwszy wypluwał by tyle wyników, potem drugie losowanie i pierwszy by 
tyle wyników opuszczał. Myślałem że byłby lepszy, bo nawet jak RanLux 
opuści blisko 200, to mamy regularność: bierze 24, opuszcza 199 itd..
Napisałem https://gist.github.com/borneq/abc66f4c861950cf87275523b1262bd9
i działa z prędkością RanLux level 1 opuszczając połowę (dodanie 
drugiego praktycznie nie zwalnia, bo jest rzadko wołany)
Tylko problem: na teście Birthday jest WEAK, nawet gdy sprawdziłem dla 
innego seeda. Czyli zachowuje się gorzej niż RanLux Level 1.
A więc chaotyczność spowodowana jest tym, że pomijamy około 200 wyników, 
a nawet zmienna ilość pomijanych jest gorsza.
Jeśli chodzi o prędkość to RanLux przegrywa z MT19937?
Re: test randomizacyjny w C
#308729
Author: M.M.
Date: Tue, 27 Sep 2016 17:12
192 lines
13056 bytes
On Tuesday, September 27, 2016 at 3:55:07 PM UTC+2, Borneq wrote:
> W dniu 26.09.2016 o 23:39, bartekltg pisze:
> > I chce mieć jakieś przesłanki by wierzyc, że nawet tak długi ciąg nadal
> > ma statystyczne własności liczb losowych i że moja całeczka wyjdzie
> > z dokąłdnością do tych 6 miejsc po przecinku. Testy działajace w sekundę
> > to trochę mało ;-)
> 
> Z czego wynika dobra chaotyczność RanLuxa? Na poziomie 0 działa jak 
> algorytm o nazwie RCarry, poziom 1 to połowa wyników idzie do śmietnika: 
> najpierw wypluwa 24 wyniki, potem opuszcza 24.
> potem jest
> level 2 (luxury=97)
> level 3 (luxury=223)
> level 4 (luxury=389)
> opuszcza luxury-24. Liczby 97,223 i 389 przypuszcam dobrane 
> nieprzypadkowo, nawet opuszczenie 200 działało by gorzej niż 223-24.

Technika ciekawa, aczkolwiek na pierwszy rzut oka wydaje się marnowaniem
wygenerowanych liczb.

 

> Chciałem zrobić RCarry do kwadratu, w którym RCarry byłby sterowany 
> drugim RCarry.


> Działał by w ten sposób, że drugi losował by liczbę z przedziału 1..32, 
> pierwszy wypluwał by tyle wyników, potem drugie losowanie i pierwszy by 
> tyle wyników opuszczał. 
a jakby tak zrobić:
switch( rand1() % 20 ) {
 case 0: return rand2();
 case 1: return rand3();
 .....
 case 19: return rand21();
}



> Myślałem że byłby lepszy, 
Jak najlepiej porównać dwa generatory liczb losowych?


> bo nawet jak RanLux 
> opuści blisko 200, to mamy regularność: bierze 24, opuszcza 199 itd..
> Napisałem https://gist.github.com/borneq/abc66f4c861950cf87275523b1262bd9
> i działa z prędkością RanLux level 1 opuszczając połowę (dodanie 
> drugiego praktycznie nie zwalnia, bo jest rzadko wołany)
> Tylko problem: na teście Birthday jest WEAK, 
Hmmmm mój generator (złożenie generatorów fibonaciego) ostatnio przeszedł
test birthday, na dole wkleję.


> nawet gdy sprawdziłem dla 
> innego seeda. Czyli zachowuje się gorzej niż RanLux Level 1.
> A więc chaotyczność spowodowana jest tym, że pomijamy około 200 wyników, 
> a nawet zmienna ilość pomijanych jest gorsza.
> Jeśli chodzi o prędkość to RanLux przegrywa z MT19937?
Nie wiem, ale jeśli dobrze pamiętam, to z moim MT przegrywa na szybkość.



time ./rnd | dieharder -a -g 200 -m 10
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
stdin_input_raw|  2.70e+07  |1924056541|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|    1000|0.83569654|  PASSED  
      diehard_operm5|   0|   1000000|    1000|0.22659670|  PASSED  
  diehard_rank_32x32|   0|     40000|    1000|0.90786266|  PASSED  
    diehard_rank_6x8|   0|    100000|    1000|0.98931206|  PASSED  
   diehard_bitstream|   0|   2097152|    1000|0.49288534|  PASSED  
        diehard_opso|   0|   2097152|    1000|0.60916813|  PASSED  
        diehard_oqso|   0|   2097152|    1000|0.77377133|  PASSED  
         diehard_dna|   0|   2097152|    1000|0.23039665|  PASSED  
diehard_count_1s_str|   0|    256000|    1000|0.26870020|  PASSED  
diehard_count_1s_byt|   0|    256000|    1000|0.25748929|  PASSED  
 diehard_parking_lot|   0|     12000|    1000|0.70049292|  PASSED  
    diehard_2dsphere|   2|      8000|    1000|0.84109744|  PASSED  
    diehard_3dsphere|   3|      4000|    1000|0.57459150|  PASSED  
     diehard_squeeze|   0|    100000|    1000|0.27099460|  PASSED  
        diehard_sums|   0|       100|    1000|0.00002160|   WEAK   
        diehard_runs|   0|    100000|    1000|0.92646087|  PASSED  
        diehard_runs|   0|    100000|    1000|0.45702558|  PASSED  
       diehard_craps|   0|    200000|    1000|0.26865625|  PASSED  
       diehard_craps|   0|    200000|    1000|0.64452221|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|    1000|0.90422550|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|    1000|0.08962973|  PASSED  
         sts_monobit|   1|    100000|    1000|0.66645747|  PASSED  
            sts_runs|   2|    100000|    1000|0.00791660|  PASSED  
          sts_serial|   1|    100000|    1000|0.35683760|  PASSED  
          sts_serial|   2|    100000|    1000|0.14463907|  PASSED  
          sts_serial|   3|    100000|    1000|0.33017578|  PASSED  
          sts_serial|   3|    100000|    1000|0.72558533|  PASSED  
          sts_serial|   4|    100000|    1000|0.47434563|  PASSED  
          sts_serial|   4|    100000|    1000|0.53389108|  PASSED  
          sts_serial|   5|    100000|    1000|0.91033717|  PASSED  
          sts_serial|   5|    100000|    1000|0.41036311|  PASSED  
          sts_serial|   6|    100000|    1000|0.79641566|  PASSED  
          sts_serial|   6|    100000|    1000|0.04698906|  PASSED  
          sts_serial|   7|    100000|    1000|0.69445765|  PASSED  
          sts_serial|   7|    100000|    1000|0.63360683|  PASSED  
          sts_serial|   8|    100000|    1000|0.34612215|  PASSED  
          sts_serial|   8|    100000|    1000|0.38717508|  PASSED  
          sts_serial|   9|    100000|    1000|0.99524068|   WEAK   
          sts_serial|   9|    100000|    1000|0.91942749|  PASSED  
          sts_serial|  10|    100000|    1000|0.34151680|  PASSED  
          sts_serial|  10|    100000|    1000|0.12966393|  PASSED  
          sts_serial|  11|    100000|    1000|0.39648146|  PASSED  
          sts_serial|  11|    100000|    1000|0.51623766|  PASSED  
          sts_serial|  12|    100000|    1000|0.75353729|  PASSED  
          sts_serial|  12|    100000|    1000|0.82450881|  PASSED  
          sts_serial|  13|    100000|    1000|0.50878888|  PASSED  
          sts_serial|  13|    100000|    1000|0.72802286|  PASSED  
          sts_serial|  14|    100000|    1000|0.68919912|  PASSED  
          sts_serial|  14|    100000|    1000|0.09763173|  PASSED  
          sts_serial|  15|    100000|    1000|0.99814712|   WEAK   
          sts_serial|  15|    100000|    1000|0.74941011|  PASSED  
          sts_serial|  16|    100000|    1000|0.82216937|  PASSED  
          sts_serial|  16|    100000|    1000|0.18846517|  PASSED  
         rgb_bitdist|   1|    100000|    1000|0.47176520|  PASSED  
         rgb_bitdist|   2|    100000|    1000|0.55919895|  PASSED  
         rgb_bitdist|   3|    100000|    1000|0.92336165|  PASSED  
         rgb_bitdist|   4|    100000|    1000|0.03200004|  PASSED  
         rgb_bitdist|   5|    100000|    1000|0.12472691|  PASSED  
         rgb_bitdist|   6|    100000|    1000|0.85176166|  PASSED  
         rgb_bitdist|   7|    100000|    1000|0.37372592|  PASSED  
         rgb_bitdist|   8|    100000|    1000|0.64212837|  PASSED  
         rgb_bitdist|   9|    100000|    1000|0.97652021|  PASSED  
         rgb_bitdist|  10|    100000|    1000|0.24231110|  PASSED  
         rgb_bitdist|  11|    100000|    1000|0.31462094|  PASSED  
         rgb_bitdist|  12|    100000|    1000|0.32638226|  PASSED  
rgb_minimum_distance|   2|     10000|   10000|0.29794155|  PASSED  
rgb_minimum_distance|   3|     10000|   10000|0.38512563|  PASSED  
rgb_minimum_distance|   4|     10000|   10000|0.29177013|  PASSED  
rgb_minimum_distance|   5|     10000|   10000|0.08198557|  PASSED  
    rgb_permutations|   2|    100000|    1000|0.07422467|  PASSED  
    rgb_permutations|   3|    100000|    1000|0.31413748|  PASSED  
    rgb_permutations|   4|    100000|    1000|0.43986805|  PASSED  
    rgb_permutations|   5|    100000|    1000|0.97182338|  PASSED  
      rgb_lagged_sum|   0|   1000000|    1000|0.91570747|  PASSED  
      rgb_lagged_sum|   1|   1000000|    1000|0.10651940|  PASSED  
      rgb_lagged_sum|   2|   1000000|    1000|0.56896135|  PASSED  
      rgb_lagged_sum|   3|   1000000|    1000|0.70581349|  PASSED  
      rgb_lagged_sum|   4|   1000000|    1000|0.19724826|  PASSED  
      rgb_lagged_sum|   5|   1000000|    1000|0.65078816|  PASSED  
      rgb_lagged_sum|   6|   1000000|    1000|0.41915114|  PASSED  
      rgb_lagged_sum|   7|   1000000|    1000|0.26126168|  PASSED  
      rgb_lagged_sum|   8|   1000000|    1000|0.59557122|  PASSED  
      rgb_lagged_sum|   9|   1000000|    1000|0.89618103|  PASSED  
      rgb_lagged_sum|  10|   1000000|    1000|0.54322506|  PASSED  
      rgb_lagged_sum|  11|   1000000|    1000|0.11154278|  PASSED  
      rgb_lagged_sum|  12|   1000000|    1000|0.59999610|  PASSED  
      rgb_lagged_sum|  13|   1000000|    1000|0.11091340|  PASSED  
      rgb_lagged_sum|  14|   1000000|    1000|0.35133030|  PASSED  
      rgb_lagged_sum|  15|   1000000|    1000|0.69212592|  PASSED  
      rgb_lagged_sum|  16|   1000000|    1000|0.19574667|  PASSED  
      rgb_lagged_sum|  17|   1000000|    1000|0.65127392|  PASSED  
      rgb_lagged_sum|  18|   1000000|    1000|0.55555634|  PASSED  
      rgb_lagged_sum|  19|   1000000|    1000|0.52041097|  PASSED  
      rgb_lagged_sum|  20|   1000000|    1000|0.94108084|  PASSED  
      rgb_lagged_sum|  21|   1000000|    1000|0.98311638|  PASSED  
      rgb_lagged_sum|  22|   1000000|    1000|0.54308450|  PASSED  
      rgb_lagged_sum|  23|   1000000|    1000|0.87524531|  PASSED  
      rgb_lagged_sum|  24|   1000000|    1000|0.67050549|  PASSED  
      rgb_lagged_sum|  25|   1000000|    1000|0.94732988|  PASSED  
      rgb_lagged_sum|  26|   1000000|    1000|0.13050501|  PASSED  
      rgb_lagged_sum|  27|   1000000|    1000|0.67937496|  PASSED  
      rgb_lagged_sum|  28|   1000000|    1000|0.05449207|  PASSED  
      rgb_lagged_sum|  29|   1000000|    1000|0.81549708|  PASSED  
      rgb_lagged_sum|  30|   1000000|    1000|0.89985935|  PASSED  
      rgb_lagged_sum|  31|   1000000|    1000|0.26867934|  PASSED  
      rgb_lagged_sum|  32|   1000000|    1000|0.02701355|  PASSED  
     rgb_kstest_test|   0|     10000|   10000|0.03245776|  PASSED  
     dab_bytedistrib|   0|  51200000|      10|0.82640441|  PASSED  
             dab_dct| 256|     50000|      10|0.98040505|  PASSED  
Preparing to run test 207.  ntuple = 0
        dab_filltree|  32|  15000000|      10|0.25370625|  PASSED  
        dab_filltree|  32|  15000000|      10|0.34845855|  PASSED  
Preparing to run test 208.  ntuple = 0
       dab_filltree2|   0|   5000000|      10|0.61479185|  PASSED  
       dab_filltree2|   1|   5000000|      10|0.45278953|  PASSED  
Preparing to run test 209.  ntuple = 0
        dab_monobit2|  12|  65000000|      10|0.49459959|  PASSED  

real    504m9.969s
user    672m43.030s
sys     42m24.130s
Re: test randomizacyjny w C
#308730
Author: Borneq
Date: Tue, 27 Sep 2016 17:52
8 lines
2132 bytes
W dniu 27.09.2016 o 19:12, M.M. pisze:
> Hmmmm mój generator (złożenie generatorów fibonaciego) ostatnio przeszedł
> test birthday, na dole wkleję.

To ciekawe, bo mój jest złożeniem i to mającym losowo pomijać pewną 
ilość a i tak dla birthday jest break nie mówiąc o innych 
właściwościach: gdy przejdziemy RanLuxem birthday to jeszcze jakiś test 
spektralny, ale jak i go przejdziemy to teoretyczne nieścisłości.
Re: test randomizacyjny w C
#308731
Author: M.M.
Date: Tue, 27 Sep 2016 18:10
11 lines
2628 bytes
On Tuesday, September 27, 2016 at 7:52:20 PM UTC+2, Borneq wrote:
> W dniu 27.09.2016 o 19:12, M.M. pisze:
> > Hmmmm mój generator (złożenie generatorów fibonaciego) ostatnio przeszedł
> > test birthday, na dole wkleję.
> 
> To ciekawe, bo mój jest złożeniem i to mającym losowo pomijać pewną 
> ilość a i tak dla birthday jest break nie mówiąc o innych 
> właściwościach: gdy przejdziemy RanLuxem birthday to jeszcze jakiś test 
> spektralny, ale jak i go przejdziemy to teoretyczne nieścisłości.

Nie wiem czemu nie przechodzi, miał być taki dobry... Może źle testujesz?
Re: test randomizacyjny w C
#308732
Author: Borneq
Date: Tue, 27 Sep 2016 18:21
6 lines
2084 bytes
W dniu 27.09.2016 o 20:10, M.M. pisze:
> Nie wiem czemu nie przechodzi, miał być taki dobry... Może źle testujesz?

Ciekawa sprawa, ledwo przechodzi ale jest WEAK, i to dla różnych seedów.
Może jest nie najlepszy, bo nie jest ważne że losowo pomija od 1 do 32, 
ale trzeba pomijać ze 199 po porcji 24.
Re: test randomizacyjny w C
#308733
Author: M.M.
Date: Tue, 27 Sep 2016 19:02
141 lines
11354 bytes
On Tuesday, September 27, 2016 at 8:21:41 PM UTC+2, Borneq wrote:
> W dniu 27.09.2016 o 20:10, M.M. pisze:
> > Nie wiem czemu nie przechodzi, miał być taki dobry... Może źle testujesz?
> 
> Ciekawa sprawa, ledwo przechodzi ale jest WEAK, i to dla różnych seedów.
> Może jest nie najlepszy, bo nie jest ważne że losowo pomija od 1 do 32, 
> ale trzeba pomijać ze 199 po porcji 24.

Nie wiem, odpaliłem mój prościutki generator jeszcze raz i przechodzi. Tylko jeden był week. To jak tamtem jest taki dobry, to tym bardziej powinien
przechodzić

time ./rnd | dieharder -a -g 200 -m 1
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
stdin_input_raw|  2.71e+07  |2664392413|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.64349609|  PASSED  
      diehard_operm5|   0|   1000000|     100|0.97377736|  PASSED  
  diehard_rank_32x32|   0|     40000|     100|0.44768640|  PASSED  
    diehard_rank_6x8|   0|    100000|     100|0.90602258|  PASSED  
   diehard_bitstream|   0|   2097152|     100|0.97214777|  PASSED  
        diehard_opso|   0|   2097152|     100|0.51326223|  PASSED  
        diehard_oqso|   0|   2097152|     100|0.90361549|  PASSED  
         diehard_dna|   0|   2097152|     100|0.81001827|  PASSED  
diehard_count_1s_str|   0|    256000|     100|0.77859285|  PASSED  
diehard_count_1s_byt|   0|    256000|     100|0.07964640|  PASSED  
 diehard_parking_lot|   0|     12000|     100|0.18589551|  PASSED  
    diehard_2dsphere|   2|      8000|     100|0.35338027|  PASSED  
    diehard_3dsphere|   3|      4000|     100|0.99275707|  PASSED  
     diehard_squeeze|   0|    100000|     100|0.54099159|  PASSED  
        diehard_sums|   0|       100|     100|0.08354464|  PASSED  
        diehard_runs|   0|    100000|     100|0.65197195|  PASSED  
        diehard_runs|   0|    100000|     100|0.99354055|  PASSED  
       diehard_craps|   0|    200000|     100|0.47291673|  PASSED  
       diehard_craps|   0|    200000|     100|0.14326505|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.26640208|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.35730344|  PASSED  
         sts_monobit|   1|    100000|     100|0.05379196|  PASSED  
            sts_runs|   2|    100000|     100|0.76729525|  PASSED  
          sts_serial|   1|    100000|     100|0.68784776|  PASSED  
          sts_serial|   2|    100000|     100|0.73905649|  PASSED  
          sts_serial|   3|    100000|     100|0.68219636|  PASSED  
          sts_serial|   3|    100000|     100|0.96346581|  PASSED  
          sts_serial|   4|    100000|     100|0.37617476|  PASSED  
          sts_serial|   4|    100000|     100|0.70189906|  PASSED  
          sts_serial|   5|    100000|     100|0.73583887|  PASSED  
          sts_serial|   5|    100000|     100|0.83511384|  PASSED  
          sts_serial|   6|    100000|     100|0.22251082|  PASSED  
          sts_serial|   6|    100000|     100|0.53936899|  PASSED  
          sts_serial|   7|    100000|     100|0.48970835|  PASSED  
          sts_serial|   7|    100000|     100|0.36652650|  PASSED  
          sts_serial|   8|    100000|     100|0.71000549|  PASSED  
          sts_serial|   8|    100000|     100|0.92361925|  PASSED  
          sts_serial|   9|    100000|     100|0.94874280|  PASSED  
          sts_serial|   9|    100000|     100|0.24776664|  PASSED  
          sts_serial|  10|    100000|     100|0.85990907|  PASSED  
          sts_serial|  10|    100000|     100|0.84886387|  PASSED  
          sts_serial|  11|    100000|     100|0.39742672|  PASSED  
          sts_serial|  11|    100000|     100|0.24629784|  PASSED  
          sts_serial|  12|    100000|     100|0.00524632|  PASSED  
          sts_serial|  12|    100000|     100|0.01946086|  PASSED  
          sts_serial|  13|    100000|     100|0.05985317|  PASSED  
          sts_serial|  13|    100000|     100|0.96823046|  PASSED  
          sts_serial|  14|    100000|     100|0.10707524|  PASSED  
          sts_serial|  14|    100000|     100|0.48174459|  PASSED  
          sts_serial|  15|    100000|     100|0.32279683|  PASSED  
          sts_serial|  15|    100000|     100|0.98407243|  PASSED  
          sts_serial|  16|    100000|     100|0.94296835|  PASSED  
          sts_serial|  16|    100000|     100|0.44146129|  PASSED  
         rgb_bitdist|   1|    100000|     100|0.30183244|  PASSED  
         rgb_bitdist|   2|    100000|     100|0.91119214|  PASSED  
         rgb_bitdist|   3|    100000|     100|0.89466943|  PASSED  
         rgb_bitdist|   4|    100000|     100|0.05590017|  PASSED  
         rgb_bitdist|   5|    100000|     100|0.36688055|  PASSED  
         rgb_bitdist|   6|    100000|     100|0.77392593|  PASSED  
         rgb_bitdist|   7|    100000|     100|0.28969866|  PASSED  
         rgb_bitdist|   8|    100000|     100|0.98039972|  PASSED  
         rgb_bitdist|   9|    100000|     100|0.76775322|  PASSED  
         rgb_bitdist|  10|    100000|     100|0.07049677|  PASSED  
         rgb_bitdist|  11|    100000|     100|0.56941133|  PASSED  
         rgb_bitdist|  12|    100000|     100|0.49093420|  PASSED  
rgb_minimum_distance|   2|     10000|    1000|0.68776581|  PASSED  
rgb_minimum_distance|   3|     10000|    1000|0.59036998|  PASSED  
rgb_minimum_distance|   4|     10000|    1000|0.66458777|  PASSED  
rgb_minimum_distance|   5|     10000|    1000|0.16046081|  PASSED  
    rgb_permutations|   2|    100000|     100|0.27160029|  PASSED  
    rgb_permutations|   3|    100000|     100|0.50305842|  PASSED  
    rgb_permutations|   4|    100000|     100|0.11321640|  PASSED  
    rgb_permutations|   5|    100000|     100|0.87148790|  PASSED  
      rgb_lagged_sum|   0|   1000000|     100|0.98684886|  PASSED  
      rgb_lagged_sum|   1|   1000000|     100|0.38439509|  PASSED  
      rgb_lagged_sum|   2|   1000000|     100|0.14787893|  PASSED  
      rgb_lagged_sum|   3|   1000000|     100|0.93062217|  PASSED  
      rgb_lagged_sum|   4|   1000000|     100|0.66233457|  PASSED  
      rgb_lagged_sum|   5|   1000000|     100|0.62381592|  PASSED  
      rgb_lagged_sum|   6|   1000000|     100|0.07828622|  PASSED  
      rgb_lagged_sum|   7|   1000000|     100|0.51410646|  PASSED  
      rgb_lagged_sum|   8|   1000000|     100|0.40648930|  PASSED  
      rgb_lagged_sum|   9|   1000000|     100|0.66302547|  PASSED  
      rgb_lagged_sum|  10|   1000000|     100|0.71404866|  PASSED  
      rgb_lagged_sum|  11|   1000000|     100|0.11459871|  PASSED  
      rgb_lagged_sum|  12|   1000000|     100|0.42678698|  PASSED  
      rgb_lagged_sum|  13|   1000000|     100|0.15434806|  PASSED  
      rgb_lagged_sum|  14|   1000000|     100|0.91374028|  PASSED  
      rgb_lagged_sum|  15|   1000000|     100|0.45952282|  PASSED  
      rgb_lagged_sum|  16|   1000000|     100|0.78111231|  PASSED  
      rgb_lagged_sum|  17|   1000000|     100|0.63766496|  PASSED  
      rgb_lagged_sum|  18|   1000000|     100|0.81629503|  PASSED  
      rgb_lagged_sum|  19|   1000000|     100|0.01276499|  PASSED  
      rgb_lagged_sum|  20|   1000000|     100|0.74495368|  PASSED  
      rgb_lagged_sum|  21|   1000000|     100|0.71906805|  PASSED  
      rgb_lagged_sum|  22|   1000000|     100|0.69127852|  PASSED  
      rgb_lagged_sum|  23|   1000000|     100|0.77827353|  PASSED  
      rgb_lagged_sum|  24|   1000000|     100|0.90263304|  PASSED  
      rgb_lagged_sum|  25|   1000000|     100|0.91181598|  PASSED  
      rgb_lagged_sum|  26|   1000000|     100|0.96264282|  PASSED  
      rgb_lagged_sum|  27|   1000000|     100|0.95390491|  PASSED  
      rgb_lagged_sum|  28|   1000000|     100|0.36189939|  PASSED  
      rgb_lagged_sum|  29|   1000000|     100|0.82119036|  PASSED  
      rgb_lagged_sum|  30|   1000000|     100|0.99894132|   WEAK   
      rgb_lagged_sum|  31|   1000000|     100|0.18573841|  PASSED  
      rgb_lagged_sum|  32|   1000000|     100|0.88954647|  PASSED  
     rgb_kstest_test|   0|     10000|    1000|0.95969159|  PASSED  
     dab_bytedistrib|   0|  51200000|       1|0.39610713|  PASSED  
             dab_dct| 256|     50000|       1|0.86681986|  PASSED  
Preparing to run test 207.  ntuple = 0
        dab_filltree|  32|  15000000|       1|0.72430919|  PASSED  
        dab_filltree|  32|  15000000|       1|0.25284590|  PASSED  
Preparing to run test 208.  ntuple = 0
       dab_filltree2|   0|   5000000|       1|0.83484386|  PASSED  
       dab_filltree2|   1|   5000000|       1|0.89870644|  PASSED  
Preparing to run test 209.  ntuple = 0
        dab_monobit2|  12|  65000000|       1|0.55814000|  PASSED  

real    51m4.239s
user    67m10.590s
sys     4m40.383s
Re: test randomizacyjny w C
#308734
Author: Borneq
Date: Tue, 27 Sep 2016 19:39
16 lines
2532 bytes
W dniu 27.09.2016 o 21:02, M.M. pisze:
> On Tuesday, September 27, 2016 at 8:21:41 PM UTC+2, Borneq wrote:
>> W dniu 27.09.2016 o 20:10, M.M. pisze:
>>> Nie wiem czemu nie przechodzi, miał być taki dobry... Może źle testujesz?
>>
>> Ciekawa sprawa, ledwo przechodzi ale jest WEAK, i to dla różnych seedów.
>> Może jest nie najlepszy, bo nie jest ważne że losowo pomija od 1 do 32,
>> ale trzeba pomijać ze 199 po porcji 24.
>
> Nie wiem, odpaliłem mój prościutki generator jeszcze raz i przechodzi. Tylko jeden był week. To jak tamtem jest taki dobry, to tym bardziej powinien
> przechodzić
>
> time ./rnd | dieharder -a -g 200 -m 1

A jak ten Twój rnd wypluwa wyniki? w formie tekstowej czy jakoś binarnie 
, jak do stdout?
Re: test randomizacyjny w C
#308735
Author: M.M.
Date: Tue, 27 Sep 2016 19:56
159 lines
11958 bytes
On Tuesday, September 27, 2016 at 9:39:48 PM UTC+2, Borneq wrote:
> W dniu 27.09.2016 o 21:02, M.M. pisze:
> > On Tuesday, September 27, 2016 at 8:21:41 PM UTC+2, Borneq wrote:
> >> W dniu 27.09.2016 o 20:10, M.M. pisze:
> >>> Nie wiem czemu nie przechodzi, miał być taki dobry... Może źle testujesz?
> >>
> >> Ciekawa sprawa, ledwo przechodzi ale jest WEAK, i to dla różnych seedów.
> >> Może jest nie najlepszy, bo nie jest ważne że losowo pomija od 1 do 32,
> >> ale trzeba pomijać ze 199 po porcji 24.
> >
> > Nie wiem, odpaliłem mój prościutki generator jeszcze raz i przechodzi. Tylko jeden był week. To jak tamtem jest taki dobry, to tym bardziej powinien
> > przechodzić
> >
> > time ./rnd | dieharder -a -g 200 -m 1
> 
> A jak ten Twój rnd wypluwa wyniki? w formie tekstowej czy jakoś binarnie 
> , jak do stdout?


Opcja -g 200 czyli wypluwa na stdout w formacie binarnym.

Cytat:
[
Note that the stdin_input_raw interface (-g 200) is a "universal" interface. Any generator that can produce a (continuous) stream of presumably random bits can be tested with dieharder.
]


Następny test, wygląda że wszystko jest w porządku. Ani jeden nie jest week.

time ./rnd | dieharder -a -g 200 -m 1
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
stdin_input_raw|  2.54e+07  |1059283188|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.68409170|  PASSED  
      diehard_operm5|   0|   1000000|     100|0.74897730|  PASSED  
  diehard_rank_32x32|   0|     40000|     100|0.30566304|  PASSED  
    diehard_rank_6x8|   0|    100000|     100|0.25275266|  PASSED  
   diehard_bitstream|   0|   2097152|     100|0.73612808|  PASSED  
        diehard_opso|   0|   2097152|     100|0.10305413|  PASSED  
        diehard_oqso|   0|   2097152|     100|0.88684586|  PASSED  
         diehard_dna|   0|   2097152|     100|0.58959488|  PASSED  
diehard_count_1s_str|   0|    256000|     100|0.31966526|  PASSED  
diehard_count_1s_byt|   0|    256000|     100|0.68179121|  PASSED  
 diehard_parking_lot|   0|     12000|     100|0.51759383|  PASSED  
    diehard_2dsphere|   2|      8000|     100|0.75271949|  PASSED  
    diehard_3dsphere|   3|      4000|     100|0.20880039|  PASSED  
     diehard_squeeze|   0|    100000|     100|0.98097632|  PASSED  
        diehard_sums|   0|       100|     100|0.13293677|  PASSED  
        diehard_runs|   0|    100000|     100|0.25724047|  PASSED  
        diehard_runs|   0|    100000|     100|0.30685125|  PASSED  
       diehard_craps|   0|    200000|     100|0.62576550|  PASSED  
       diehard_craps|   0|    200000|     100|0.80805638|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.32504382|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.26258745|  PASSED  
         sts_monobit|   1|    100000|     100|0.97351369|  PASSED  
            sts_runs|   2|    100000|     100|0.60911333|  PASSED  
          sts_serial|   1|    100000|     100|0.86675646|  PASSED  
          sts_serial|   2|    100000|     100|0.73850085|  PASSED  
          sts_serial|   3|    100000|     100|0.07689848|  PASSED  
          sts_serial|   3|    100000|     100|0.05018614|  PASSED  
          sts_serial|   4|    100000|     100|0.19863081|  PASSED  
          sts_serial|   4|    100000|     100|0.04009527|  PASSED  
          sts_serial|   5|    100000|     100|0.75704443|  PASSED  
          sts_serial|   5|    100000|     100|0.92169781|  PASSED  
          sts_serial|   6|    100000|     100|0.34974105|  PASSED  
          sts_serial|   6|    100000|     100|0.64712994|  PASSED  
          sts_serial|   7|    100000|     100|0.59210054|  PASSED  
          sts_serial|   7|    100000|     100|0.70483902|  PASSED  
          sts_serial|   8|    100000|     100|0.06183554|  PASSED  
          sts_serial|   8|    100000|     100|0.62716420|  PASSED  
          sts_serial|   9|    100000|     100|0.69732535|  PASSED  
          sts_serial|   9|    100000|     100|0.29952130|  PASSED  
          sts_serial|  10|    100000|     100|0.75344022|  PASSED  
          sts_serial|  10|    100000|     100|0.23429746|  PASSED  
          sts_serial|  11|    100000|     100|0.56465695|  PASSED  
          sts_serial|  11|    100000|     100|0.13630727|  PASSED  
          sts_serial|  12|    100000|     100|0.29195195|  PASSED  
          sts_serial|  12|    100000|     100|0.65403717|  PASSED  
          sts_serial|  13|    100000|     100|0.73256655|  PASSED  
          sts_serial|  13|    100000|     100|0.76963126|  PASSED  
          sts_serial|  14|    100000|     100|0.90144598|  PASSED  
          sts_serial|  14|    100000|     100|0.91522549|  PASSED  
          sts_serial|  15|    100000|     100|0.66193865|  PASSED  
          sts_serial|  15|    100000|     100|0.14827064|  PASSED  
          sts_serial|  16|    100000|     100|0.52145044|  PASSED  
          sts_serial|  16|    100000|     100|0.92534425|  PASSED  
         rgb_bitdist|   1|    100000|     100|0.54667349|  PASSED  
         rgb_bitdist|   2|    100000|     100|0.32418845|  PASSED  
         rgb_bitdist|   3|    100000|     100|0.13465529|  PASSED  
         rgb_bitdist|   4|    100000|     100|0.34803338|  PASSED  
         rgb_bitdist|   5|    100000|     100|0.58352832|  PASSED  
         rgb_bitdist|   6|    100000|     100|0.06843073|  PASSED  
         rgb_bitdist|   7|    100000|     100|0.46406951|  PASSED  
         rgb_bitdist|   8|    100000|     100|0.04828080|  PASSED  
         rgb_bitdist|   9|    100000|     100|0.60406650|  PASSED  
         rgb_bitdist|  10|    100000|     100|0.03212760|  PASSED  
         rgb_bitdist|  11|    100000|     100|0.80615081|  PASSED  
         rgb_bitdist|  12|    100000|     100|0.47883686|  PASSED  
rgb_minimum_distance|   2|     10000|    1000|0.24400536|  PASSED  
rgb_minimum_distance|   3|     10000|    1000|0.50015230|  PASSED  
rgb_minimum_distance|   4|     10000|    1000|0.43401145|  PASSED  
rgb_minimum_distance|   5|     10000|    1000|0.71514137|  PASSED  
    rgb_permutations|   2|    100000|     100|0.97508891|  PASSED  
    rgb_permutations|   3|    100000|     100|0.93745700|  PASSED  
    rgb_permutations|   4|    100000|     100|0.12881656|  PASSED  
    rgb_permutations|   5|    100000|     100|0.97265505|  PASSED  
      rgb_lagged_sum|   0|   1000000|     100|0.69904494|  PASSED  
      rgb_lagged_sum|   1|   1000000|     100|0.08711887|  PASSED  
      rgb_lagged_sum|   2|   1000000|     100|0.27533354|  PASSED  
      rgb_lagged_sum|   3|   1000000|     100|0.79760277|  PASSED  
      rgb_lagged_sum|   4|   1000000|     100|0.06906735|  PASSED  
      rgb_lagged_sum|   5|   1000000|     100|0.08810031|  PASSED  
      rgb_lagged_sum|   6|   1000000|     100|0.57729137|  PASSED  
      rgb_lagged_sum|   7|   1000000|     100|0.67246246|  PASSED  
      rgb_lagged_sum|   8|   1000000|     100|0.47748819|  PASSED  
      rgb_lagged_sum|   9|   1000000|     100|0.74649481|  PASSED  
      rgb_lagged_sum|  10|   1000000|     100|0.28732562|  PASSED  
      rgb_lagged_sum|  11|   1000000|     100|0.07640161|  PASSED  
      rgb_lagged_sum|  12|   1000000|     100|0.87546851|  PASSED  
      rgb_lagged_sum|  13|   1000000|     100|0.37664943|  PASSED  
      rgb_lagged_sum|  14|   1000000|     100|0.12235549|  PASSED  
      rgb_lagged_sum|  15|   1000000|     100|0.87386393|  PASSED  
      rgb_lagged_sum|  16|   1000000|     100|0.35517527|  PASSED  
      rgb_lagged_sum|  17|   1000000|     100|0.51943378|  PASSED  
      rgb_lagged_sum|  18|   1000000|     100|0.70200580|  PASSED  
      rgb_lagged_sum|  19|   1000000|     100|0.15007958|  PASSED  
      rgb_lagged_sum|  20|   1000000|     100|0.19720763|  PASSED  
      rgb_lagged_sum|  21|   1000000|     100|0.34022689|  PASSED  
      rgb_lagged_sum|  22|   1000000|     100|0.43294094|  PASSED  
      rgb_lagged_sum|  23|   1000000|     100|0.32866447|  PASSED  
      rgb_lagged_sum|  24|   1000000|     100|0.99026716|  PASSED  
      rgb_lagged_sum|  25|   1000000|     100|0.65374250|  PASSED  
      rgb_lagged_sum|  26|   1000000|     100|0.40907720|  PASSED  
      rgb_lagged_sum|  27|   1000000|     100|0.23069621|  PASSED  
      rgb_lagged_sum|  28|   1000000|     100|0.91865044|  PASSED  
      rgb_lagged_sum|  29|   1000000|     100|0.72871819|  PASSED  
      rgb_lagged_sum|  30|   1000000|     100|0.39325681|  PASSED  
      rgb_lagged_sum|  31|   1000000|     100|0.93991146|  PASSED  
      rgb_lagged_sum|  32|   1000000|     100|0.44698501|  PASSED  
     rgb_kstest_test|   0|     10000|    1000|0.33798269|  PASSED  
     dab_bytedistrib|   0|  51200000|       1|0.92405410|  PASSED  
             dab_dct| 256|     50000|       1|0.06909636|  PASSED  
Preparing to run test 207.  ntuple = 0
        dab_filltree|  32|  15000000|       1|0.21814234|  PASSED  
        dab_filltree|  32|  15000000|       1|0.92935563|  PASSED  
Preparing to run test 208.  ntuple = 0
       dab_filltree2|   0|   5000000|       1|0.05906371|  PASSED  
       dab_filltree2|   1|   5000000|       1|0.34953102|  PASSED  
Preparing to run test 209.  ntuple = 0
        dab_monobit2|  12|  65000000|       1|0.96099390|  PASSED  

real    50m55.068s
user    67m22.667s
sys     4m23.355s
Re: test randomizacyjny w C
#308736
Author: Borneq
Date: Tue, 27 Sep 2016 20:25
4 lines
1976 bytes
W dniu 27.09.2016 o 21:56, M.M. pisze:
> Opcja -g 200 czyli wypluwa na stdout w formacie binarnym.

A jak? Bo na stdout to zwykle piszę za pomocą printfa tekstowo
Re: test randomizacyjny w C
#308737
Author: M.M.
Date: Tue, 27 Sep 2016 20:30
144 lines
11276 bytes
On Tuesday, September 27, 2016 at 10:25:29 PM UTC+2, Borneq wrote:
> W dniu 27.09.2016 o 21:56, M.M. pisze:
> > Opcja -g 200 czyli wypluwa na stdout w formacie binarnym.
> 
> A jak? Bo na stdout to zwykle piszę za pomocą printfa tekstowo

Ja mam fwrite( out , 8 , 128 , stdout ) - wyrzucam 128 liczby
typu uint64 w jednym wywołaniu.

A tutaj testy z MT, wszystkie przeszedł. Test działał około 2 razy
szybciej niż mojego generatora, ale MT nie korzystał z stdout, jest
wkompilowany w diehardera.


time dieharder -a -g 15 -m 1
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
   mt19937_1998|  7.27e+07  |3886508310|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.29079556|  PASSED  
      diehard_operm5|   0|   1000000|     100|0.70437022|  PASSED  
  diehard_rank_32x32|   0|     40000|     100|0.43914883|  PASSED  
    diehard_rank_6x8|   0|    100000|     100|0.95185917|  PASSED  
   diehard_bitstream|   0|   2097152|     100|0.94910568|  PASSED  
        diehard_opso|   0|   2097152|     100|0.33258529|  PASSED  
        diehard_oqso|   0|   2097152|     100|0.15564391|  PASSED  
         diehard_dna|   0|   2097152|     100|0.03689910|  PASSED  
diehard_count_1s_str|   0|    256000|     100|0.20903110|  PASSED  
diehard_count_1s_byt|   0|    256000|     100|0.88500754|  PASSED  
 diehard_parking_lot|   0|     12000|     100|0.47786440|  PASSED  
    diehard_2dsphere|   2|      8000|     100|0.29254107|  PASSED  
    diehard_3dsphere|   3|      4000|     100|0.31773889|  PASSED  
     diehard_squeeze|   0|    100000|     100|0.29847864|  PASSED  
        diehard_sums|   0|       100|     100|0.74827749|  PASSED  
        diehard_runs|   0|    100000|     100|0.79048500|  PASSED  
        diehard_runs|   0|    100000|     100|0.70505213|  PASSED  
       diehard_craps|   0|    200000|     100|0.68853784|  PASSED  
       diehard_craps|   0|    200000|     100|0.05791874|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.89457195|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.79427762|  PASSED  
         sts_monobit|   1|    100000|     100|0.45294559|  PASSED  
            sts_runs|   2|    100000|     100|0.54544840|  PASSED  
          sts_serial|   1|    100000|     100|0.81551968|  PASSED  
          sts_serial|   2|    100000|     100|0.75094390|  PASSED  
          sts_serial|   3|    100000|     100|0.04412040|  PASSED  
          sts_serial|   3|    100000|     100|0.05324339|  PASSED  
          sts_serial|   4|    100000|     100|0.39255920|  PASSED  
          sts_serial|   4|    100000|     100|0.57644647|  PASSED  
          sts_serial|   5|    100000|     100|0.86624559|  PASSED  
          sts_serial|   5|    100000|     100|0.17199762|  PASSED  
          sts_serial|   6|    100000|     100|0.25530509|  PASSED  
          sts_serial|   6|    100000|     100|0.23403583|  PASSED  
          sts_serial|   7|    100000|     100|0.29584550|  PASSED  
          sts_serial|   7|    100000|     100|0.79939586|  PASSED  
          sts_serial|   8|    100000|     100|0.31544476|  PASSED  
          sts_serial|   8|    100000|     100|0.24348346|  PASSED  
          sts_serial|   9|    100000|     100|0.81230840|  PASSED  
          sts_serial|   9|    100000|     100|0.87896175|  PASSED  
          sts_serial|  10|    100000|     100|0.32583397|  PASSED  
          sts_serial|  10|    100000|     100|0.12394835|  PASSED  
          sts_serial|  11|    100000|     100|0.63266702|  PASSED  
          sts_serial|  11|    100000|     100|0.03399046|  PASSED  
          sts_serial|  12|    100000|     100|0.56266600|  PASSED  
          sts_serial|  12|    100000|     100|0.48713958|  PASSED  
          sts_serial|  13|    100000|     100|0.83146391|  PASSED  
          sts_serial|  13|    100000|     100|0.80587188|  PASSED  
          sts_serial|  14|    100000|     100|0.65235722|  PASSED  
          sts_serial|  14|    100000|     100|0.29986129|  PASSED  
          sts_serial|  15|    100000|     100|0.81129042|  PASSED  
          sts_serial|  15|    100000|     100|0.14216669|  PASSED  
          sts_serial|  16|    100000|     100|0.78748851|  PASSED  
          sts_serial|  16|    100000|     100|0.65252125|  PASSED  
         rgb_bitdist|   1|    100000|     100|0.68580743|  PASSED  
         rgb_bitdist|   2|    100000|     100|0.67637842|  PASSED  
         rgb_bitdist|   3|    100000|     100|0.90370409|  PASSED  
         rgb_bitdist|   4|    100000|     100|0.52448929|  PASSED  
         rgb_bitdist|   5|    100000|     100|0.48610578|  PASSED  
         rgb_bitdist|   6|    100000|     100|0.41483577|  PASSED  
         rgb_bitdist|   7|    100000|     100|0.56563720|  PASSED  
         rgb_bitdist|   8|    100000|     100|0.87226986|  PASSED  
         rgb_bitdist|   9|    100000|     100|0.20893365|  PASSED  
         rgb_bitdist|  10|    100000|     100|0.96586523|  PASSED  
         rgb_bitdist|  11|    100000|     100|0.12571242|  PASSED  
         rgb_bitdist|  12|    100000|     100|0.19625190|  PASSED  
rgb_minimum_distance|   2|     10000|    1000|0.32037385|  PASSED  
rgb_minimum_distance|   3|     10000|    1000|0.92616540|  PASSED  
rgb_minimum_distance|   4|     10000|    1000|0.19452971|  PASSED  
rgb_minimum_distance|   5|     10000|    1000|0.22079067|  PASSED  
    rgb_permutations|   2|    100000|     100|0.29497186|  PASSED  
    rgb_permutations|   3|    100000|     100|0.49008341|  PASSED  
    rgb_permutations|   4|    100000|     100|0.31746259|  PASSED  
    rgb_permutations|   5|    100000|     100|0.05808067|  PASSED  
      rgb_lagged_sum|   0|   1000000|     100|0.26268665|  PASSED  
      rgb_lagged_sum|   1|   1000000|     100|0.24143543|  PASSED  
      rgb_lagged_sum|   2|   1000000|     100|0.73177997|  PASSED  
      rgb_lagged_sum|   3|   1000000|     100|0.31873134|  PASSED  
      rgb_lagged_sum|   4|   1000000|     100|0.98889848|  PASSED  
      rgb_lagged_sum|   5|   1000000|     100|0.70025077|  PASSED  
      rgb_lagged_sum|   6|   1000000|     100|0.33063598|  PASSED  
      rgb_lagged_sum|   7|   1000000|     100|0.84746753|  PASSED  
      rgb_lagged_sum|   8|   1000000|     100|0.25363525|  PASSED  
      rgb_lagged_sum|   9|   1000000|     100|0.65855989|  PASSED  
      rgb_lagged_sum|  10|   1000000|     100|0.14636577|  PASSED  
      rgb_lagged_sum|  11|   1000000|     100|0.28047279|  PASSED  
      rgb_lagged_sum|  12|   1000000|     100|0.23280549|  PASSED  
      rgb_lagged_sum|  13|   1000000|     100|0.15172423|  PASSED  
      rgb_lagged_sum|  14|   1000000|     100|0.54845915|  PASSED  
      rgb_lagged_sum|  15|   1000000|     100|0.93253513|  PASSED  
      rgb_lagged_sum|  16|   1000000|     100|0.90696040|  PASSED  
      rgb_lagged_sum|  17|   1000000|     100|0.07148806|  PASSED  
      rgb_lagged_sum|  18|   1000000|     100|0.30637742|  PASSED  
      rgb_lagged_sum|  19|   1000000|     100|0.45250163|  PASSED  
      rgb_lagged_sum|  20|   1000000|     100|0.19489275|  PASSED  
      rgb_lagged_sum|  21|   1000000|     100|0.81531491|  PASSED  
      rgb_lagged_sum|  22|   1000000|     100|0.82109824|  PASSED  
      rgb_lagged_sum|  23|   1000000|     100|0.31666127|  PASSED  
      rgb_lagged_sum|  24|   1000000|     100|0.98227071|  PASSED  
      rgb_lagged_sum|  25|   1000000|     100|0.90302192|  PASSED  
      rgb_lagged_sum|  26|   1000000|     100|0.61280879|  PASSED  
      rgb_lagged_sum|  27|   1000000|     100|0.87528427|  PASSED  
      rgb_lagged_sum|  28|   1000000|     100|0.58773205|  PASSED  
      rgb_lagged_sum|  29|   1000000|     100|0.22866481|  PASSED  
      rgb_lagged_sum|  30|   1000000|     100|0.90659790|  PASSED  
      rgb_lagged_sum|  31|   1000000|     100|0.90841066|  PASSED  
      rgb_lagged_sum|  32|   1000000|     100|0.98187269|  PASSED  
     rgb_kstest_test|   0|     10000|    1000|0.81427565|  PASSED  
     dab_bytedistrib|   0|  51200000|       1|0.04930043|  PASSED  
             dab_dct| 256|     50000|       1|0.70030254|  PASSED  
Preparing to run test 207.  ntuple = 0
        dab_filltree|  32|  15000000|       1|0.22844271|  PASSED  
        dab_filltree|  32|  15000000|       1|0.99305042|  PASSED  
Preparing to run test 208.  ntuple = 0
       dab_filltree2|   0|   5000000|       1|0.58845059|  PASSED  
       dab_filltree2|   1|   5000000|       1|0.93449473|  PASSED  
Preparing to run test 209.  ntuple = 0
        dab_monobit2|  12|  65000000|       1|0.65221265|  PASSED  

real    22m17.926s
user    22m16.561s
sys     0m1.516s
Re: test randomizacyjny w C
#308738
Author: Borneq
Date: Tue, 27 Sep 2016 20:40
6 lines
2056 bytes
W dniu 27.09.2016 o 22:30, M.M. pisze:
> A tutaj testy z MT, wszystkie przeszedł. Test działał około 2 razy
> szybciej niż mojego generatora, ale MT nie korzystał z stdout, jest
> wkompilowany w diehardera.

A możesz upublicznić kod swojego generatora?
Re: test randomizacyjny w C
#308739
Author: M.M.
Date: Tue, 27 Sep 2016 21:00
24 lines
2901 bytes
On Tuesday, September 27, 2016 at 10:40:12 PM UTC+2, Borneq wrote:
> W dniu 27.09.2016 o 22:30, M.M. pisze:
> > A tutaj testy z MT, wszystkie przeszedł. Test działał około 2 razy
> > szybciej niż mojego generatora, ale MT nie korzystał z stdout, jest
> > wkompilowany w diehardera.
> 
> A możesz upublicznić kod swojego generatora?

Nie ma co upubliczniać :) 

Ta ostatnia wersja to 5 generatorów fibonacciego. Jeden
generator wybiera jeden z czterech.

switch( rand1() % 4 ) {
  case 0: return rand2();
  case 1: return rand3();
  case 2: return rand4();
  case 3: return rand5();
}

Wszystkie rand1 do rand5 to generatory fibonaciego. Parametry dobrałem
eksperymentalnie.

Pozdrawiam
Re: test randomizacyjny w C
#308740
Author: M.M.
Date: Tue, 27 Sep 2016 21:26
159 lines
11853 bytes
On Tuesday, September 27, 2016 at 11:00:07 PM UTC+2, M.M. wrote:
> On Tuesday, September 27, 2016 at 10:40:12 PM UTC+2, Borneq wrote:
> > W dniu 27.09.2016 o 22:30, M.M. pisze:
> > > A tutaj testy z MT, wszystkie przeszedł. Test działał około 2 razy
> > > szybciej niż mojego generatora, ale MT nie korzystał z stdout, jest
> > > wkompilowany w diehardera.
> > 
> > A możesz upublicznić kod swojego generatora?
> 
> Nie ma co upubliczniać :) 
> 
> Ta ostatnia wersja to 5 generatorów fibonacciego. Jeden
> generator wybiera jeden z czterech.
> 
> switch( rand1() % 4 ) {
>   case 0: return rand2();
>   case 1: return rand3();
>   case 2: return rand4();
>   case 3: return rand5();
> }
> 
> Wszystkie rand1 do rand5 to generatory fibonaciego. Parametry dobrałem
> eksperymentalnie.
> 
> Pozdrawiam

Teraz kilka wyszło słabo. WIele zależy od seeda :)


time ./rnd | dieharder -a -g 200 -m 1
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
stdin_input_raw|  2.64e+07  | 943506442|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.81102852|  PASSED  
      diehard_operm5|   0|   1000000|     100|0.15578995|  PASSED  
  diehard_rank_32x32|   0|     40000|     100|0.65094813|  PASSED  
    diehard_rank_6x8|   0|    100000|     100|0.35123455|  PASSED  
   diehard_bitstream|   0|   2097152|     100|0.13190768|  PASSED  
        diehard_opso|   0|   2097152|     100|0.63724642|  PASSED  
        diehard_oqso|   0|   2097152|     100|0.30754902|  PASSED  
         diehard_dna|   0|   2097152|     100|0.86809063|  PASSED  
diehard_count_1s_str|   0|    256000|     100|0.80786885|  PASSED  
diehard_count_1s_byt|   0|    256000|     100|0.92824214|  PASSED  
 diehard_parking_lot|   0|     12000|     100|0.95668914|  PASSED  
    diehard_2dsphere|   2|      8000|     100|0.10041105|  PASSED  
    diehard_3dsphere|   3|      4000|     100|0.54413071|  PASSED  
     diehard_squeeze|   0|    100000|     100|0.10544961|  PASSED  
        diehard_sums|   0|       100|     100|0.05615710|  PASSED  
        diehard_runs|   0|    100000|     100|0.72019031|  PASSED  
        diehard_runs|   0|    100000|     100|0.21187761|  PASSED  
       diehard_craps|   0|    200000|     100|0.39704997|  PASSED  
       diehard_craps|   0|    200000|     100|0.92168439|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.27023051|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.15737896|  PASSED  
         sts_monobit|   1|    100000|     100|0.60049740|  PASSED  
            sts_runs|   2|    100000|     100|0.98948072|  PASSED  
          sts_serial|   1|    100000|     100|0.59978003|  PASSED  
          sts_serial|   2|    100000|     100|0.51936866|  PASSED  
          sts_serial|   3|    100000|     100|0.34125326|  PASSED  
          sts_serial|   3|    100000|     100|0.99900197|   WEAK   
          sts_serial|   4|    100000|     100|0.46442433|  PASSED  
          sts_serial|   4|    100000|     100|0.45204865|  PASSED  
          sts_serial|   5|    100000|     100|0.88063123|  PASSED  
          sts_serial|   5|    100000|     100|0.33267817|  PASSED  
          sts_serial|   6|    100000|     100|0.81195125|  PASSED  
          sts_serial|   6|    100000|     100|0.07845473|  PASSED  
          sts_serial|   7|    100000|     100|0.63368082|  PASSED  
          sts_serial|   7|    100000|     100|0.80397745|  PASSED  
          sts_serial|   8|    100000|     100|0.19388784|  PASSED  
          sts_serial|   8|    100000|     100|0.31892700|  PASSED  
          sts_serial|   9|    100000|     100|0.99503157|   WEAK   
          sts_serial|   9|    100000|     100|0.28614731|  PASSED  
          sts_serial|  10|    100000|     100|0.45646931|  PASSED  
          sts_serial|  10|    100000|     100|0.76061196|  PASSED  
          sts_serial|  11|    100000|     100|0.92582955|  PASSED  
          sts_serial|  11|    100000|     100|0.89432466|  PASSED  
          sts_serial|  12|    100000|     100|0.73534289|  PASSED  
          sts_serial|  12|    100000|     100|0.14102910|  PASSED  
          sts_serial|  13|    100000|     100|0.98619985|  PASSED  
          sts_serial|  13|    100000|     100|0.50228508|  PASSED  
          sts_serial|  14|    100000|     100|0.99855860|   WEAK   
          sts_serial|  14|    100000|     100|0.53119793|  PASSED  
          sts_serial|  15|    100000|     100|0.68963094|  PASSED  
          sts_serial|  15|    100000|     100|0.62827419|  PASSED  
          sts_serial|  16|    100000|     100|0.28478128|  PASSED  
          sts_serial|  16|    100000|     100|0.99738144|   WEAK   
         rgb_bitdist|   1|    100000|     100|0.87919615|  PASSED  
         rgb_bitdist|   2|    100000|     100|0.44761036|  PASSED  
         rgb_bitdist|   3|    100000|     100|0.93749723|  PASSED  
         rgb_bitdist|   4|    100000|     100|0.97852659|  PASSED  
         rgb_bitdist|   5|    100000|     100|0.49386643|  PASSED  
         rgb_bitdist|   6|    100000|     100|0.36393996|  PASSED  
         rgb_bitdist|   7|    100000|     100|0.15715927|  PASSED  
         rgb_bitdist|   8|    100000|     100|0.99411086|  PASSED  
         rgb_bitdist|   9|    100000|     100|0.08694454|  PASSED  
         rgb_bitdist|  10|    100000|     100|0.96622762|  PASSED  
         rgb_bitdist|  11|    100000|     100|0.96183097|  PASSED  
         rgb_bitdist|  12|    100000|     100|0.22884121|  PASSED  
rgb_minimum_distance|   2|     10000|    1000|0.72387178|  PASSED  
rgb_minimum_distance|   3|     10000|    1000|0.00603242|  PASSED  
rgb_minimum_distance|   4|     10000|    1000|0.99624783|   WEAK   
rgb_minimum_distance|   5|     10000|    1000|0.01576410|  PASSED  
    rgb_permutations|   2|    100000|     100|0.17348102|  PASSED  
    rgb_permutations|   3|    100000|     100|0.55546289|  PASSED  
    rgb_permutations|   4|    100000|     100|0.62075518|  PASSED  
    rgb_permutations|   5|    100000|     100|0.25217983|  PASSED  
      rgb_lagged_sum|   0|   1000000|     100|0.51727843|  PASSED  
      rgb_lagged_sum|   1|   1000000|     100|0.70243611|  PASSED  
      rgb_lagged_sum|   2|   1000000|     100|0.53421183|  PASSED  
      rgb_lagged_sum|   3|   1000000|     100|0.52035100|  PASSED  
      rgb_lagged_sum|   4|   1000000|     100|0.24503011|  PASSED  
      rgb_lagged_sum|   5|   1000000|     100|0.63833384|  PASSED  
      rgb_lagged_sum|   6|   1000000|     100|0.50651362|  PASSED  
      rgb_lagged_sum|   7|   1000000|     100|0.25822921|  PASSED  
      rgb_lagged_sum|   8|   1000000|     100|0.81153823|  PASSED  
      rgb_lagged_sum|   9|   1000000|     100|0.34869206|  PASSED  
      rgb_lagged_sum|  10|   1000000|     100|0.65180431|  PASSED  
      rgb_lagged_sum|  11|   1000000|     100|0.99697389|   WEAK   
      rgb_lagged_sum|  12|   1000000|     100|0.22410939|  PASSED  
      rgb_lagged_sum|  13|   1000000|     100|0.11857725|  PASSED  
      rgb_lagged_sum|  14|   1000000|     100|0.78762973|  PASSED  
      rgb_lagged_sum|  15|   1000000|     100|0.87925340|  PASSED  
      rgb_lagged_sum|  16|   1000000|     100|0.43917062|  PASSED  
      rgb_lagged_sum|  17|   1000000|     100|0.34325119|  PASSED  
      rgb_lagged_sum|  18|   1000000|     100|0.96939979|  PASSED  
      rgb_lagged_sum|  19|   1000000|     100|0.41449812|  PASSED  
      rgb_lagged_sum|  20|   1000000|     100|0.75966367|  PASSED  
      rgb_lagged_sum|  21|   1000000|     100|0.15941056|  PASSED  
      rgb_lagged_sum|  22|   1000000|     100|0.98158988|  PASSED  
      rgb_lagged_sum|  23|   1000000|     100|0.46280042|  PASSED  
      rgb_lagged_sum|  24|   1000000|     100|0.02967647|  PASSED  
      rgb_lagged_sum|  25|   1000000|     100|0.09642163|  PASSED  
      rgb_lagged_sum|  26|   1000000|     100|0.99726186|   WEAK   
      rgb_lagged_sum|  27|   1000000|     100|0.98921756|  PASSED  
      rgb_lagged_sum|  28|   1000000|     100|0.73094482|  PASSED  
      rgb_lagged_sum|  29|   1000000|     100|0.86222518|  PASSED  
      rgb_lagged_sum|  30|   1000000|     100|0.46468444|  PASSED  
      rgb_lagged_sum|  31|   1000000|     100|0.67683290|  PASSED  
      rgb_lagged_sum|  32|   1000000|     100|0.01549801|  PASSED  
     rgb_kstest_test|   0|     10000|    1000|0.01380305|  PASSED  
     dab_bytedistrib|   0|  51200000|       1|0.86564180|  PASSED  
             dab_dct| 256|     50000|       1|0.84612537|  PASSED  
Preparing to run test 207.  ntuple = 0
        dab_filltree|  32|  15000000|       1|0.72226138|  PASSED  
        dab_filltree|  32|  15000000|       1|0.58080945|  PASSED  
Preparing to run test 208.  ntuple = 0
       dab_filltree2|   0|   5000000|       1|0.54274308|  PASSED  
       dab_filltree2|   1|   5000000|       1|0.23903654|  PASSED  
Preparing to run test 209.  ntuple = 0
        dab_monobit2|  12|  65000000|       1|0.62975258|  PASSED  

real    49m24.335s
user    66m12.514s
sys     4m4.277s
Re: test randomizacyjny w C
#308741
Author: M.M.
Date: Tue, 27 Sep 2016 22:37
296 lines
21120 bytes
On Tuesday, September 27, 2016 at 11:26:49 PM UTC+2, M.M. wrote:
> On Tuesday, September 27, 2016 at 11:00:07 PM UTC+2, M.M. wrote:
> > On Tuesday, September 27, 2016 at 10:40:12 PM UTC+2, Borneq wrote:
> > > W dniu 27.09.2016 o 22:30, M.M. pisze:
> > > > A tutaj testy z MT, wszystkie przeszedł. Test działał około 2 razy
> > > > szybciej niż mojego generatora, ale MT nie korzystał z stdout, jest
> > > > wkompilowany w diehardera.
> > > 
> > > A możesz upublicznić kod swojego generatora?
> > 
> > Nie ma co upubliczniać :) 
> > 
> > Ta ostatnia wersja to 5 generatorów fibonacciego. Jeden
> > generator wybiera jeden z czterech.
> > 
> > switch( rand1() % 4 ) {
> >   case 0: return rand2();
> >   case 1: return rand3();
> >   case 2: return rand4();
> >   case 3: return rand5();
> > }
> > 
> > Wszystkie rand1 do rand5 to generatory fibonaciego. Parametry dobrałem
> > eksperymentalnie.
> > 
> > Pozdrawiam
> 
> Teraz kilka wyszło słabo. WIele zależy od seeda :)
> 
> 
> time ./rnd | dieharder -a -g 200 -m 1
> #=============================================================================#
> #            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
> #=============================================================================#
>    rng_name    |rands/second|   Seed   |
> stdin_input_raw|  2.64e+07  | 943506442|
> #=============================================================================#
>         test_name   |ntup| tsamples |psamples|  p-value |Assessment
> #=============================================================================#
>    diehard_birthdays|   0|       100|     100|0.81102852|  PASSED  
>       diehard_operm5|   0|   1000000|     100|0.15578995|  PASSED  
>   diehard_rank_32x32|   0|     40000|     100|0.65094813|  PASSED  
>     diehard_rank_6x8|   0|    100000|     100|0.35123455|  PASSED  
>    diehard_bitstream|   0|   2097152|     100|0.13190768|  PASSED  
>         diehard_opso|   0|   2097152|     100|0.63724642|  PASSED  
>         diehard_oqso|   0|   2097152|     100|0.30754902|  PASSED  
>          diehard_dna|   0|   2097152|     100|0.86809063|  PASSED  
> diehard_count_1s_str|   0|    256000|     100|0.80786885|  PASSED  
> diehard_count_1s_byt|   0|    256000|     100|0.92824214|  PASSED  
>  diehard_parking_lot|   0|     12000|     100|0.95668914|  PASSED  
>     diehard_2dsphere|   2|      8000|     100|0.10041105|  PASSED  
>     diehard_3dsphere|   3|      4000|     100|0.54413071|  PASSED  
>      diehard_squeeze|   0|    100000|     100|0.10544961|  PASSED  
>         diehard_sums|   0|       100|     100|0.05615710|  PASSED  
>         diehard_runs|   0|    100000|     100|0.72019031|  PASSED  
>         diehard_runs|   0|    100000|     100|0.21187761|  PASSED  
>        diehard_craps|   0|    200000|     100|0.39704997|  PASSED  
>        diehard_craps|   0|    200000|     100|0.92168439|  PASSED  
>  marsaglia_tsang_gcd|   0|  10000000|     100|0.27023051|  PASSED  
>  marsaglia_tsang_gcd|   0|  10000000|     100|0.15737896|  PASSED  
>          sts_monobit|   1|    100000|     100|0.60049740|  PASSED  
>             sts_runs|   2|    100000|     100|0.98948072|  PASSED  
>           sts_serial|   1|    100000|     100|0.59978003|  PASSED  
>           sts_serial|   2|    100000|     100|0.51936866|  PASSED  
>           sts_serial|   3|    100000|     100|0.34125326|  PASSED  
>           sts_serial|   3|    100000|     100|0.99900197|   WEAK   
>           sts_serial|   4|    100000|     100|0.46442433|  PASSED  
>           sts_serial|   4|    100000|     100|0.45204865|  PASSED  
>           sts_serial|   5|    100000|     100|0.88063123|  PASSED  
>           sts_serial|   5|    100000|     100|0.33267817|  PASSED  
>           sts_serial|   6|    100000|     100|0.81195125|  PASSED  
>           sts_serial|   6|    100000|     100|0.07845473|  PASSED  
>           sts_serial|   7|    100000|     100|0.63368082|  PASSED  
>           sts_serial|   7|    100000|     100|0.80397745|  PASSED  
>           sts_serial|   8|    100000|     100|0.19388784|  PASSED  
>           sts_serial|   8|    100000|     100|0.31892700|  PASSED  
>           sts_serial|   9|    100000|     100|0.99503157|   WEAK   
>           sts_serial|   9|    100000|     100|0.28614731|  PASSED  
>           sts_serial|  10|    100000|     100|0.45646931|  PASSED  
>           sts_serial|  10|    100000|     100|0.76061196|  PASSED  
>           sts_serial|  11|    100000|     100|0.92582955|  PASSED  
>           sts_serial|  11|    100000|     100|0.89432466|  PASSED  
>           sts_serial|  12|    100000|     100|0.73534289|  PASSED  
>           sts_serial|  12|    100000|     100|0.14102910|  PASSED  
>           sts_serial|  13|    100000|     100|0.98619985|  PASSED  
>           sts_serial|  13|    100000|     100|0.50228508|  PASSED  
>           sts_serial|  14|    100000|     100|0.99855860|   WEAK   
>           sts_serial|  14|    100000|     100|0.53119793|  PASSED  
>           sts_serial|  15|    100000|     100|0.68963094|  PASSED  
>           sts_serial|  15|    100000|     100|0.62827419|  PASSED  
>           sts_serial|  16|    100000|     100|0.28478128|  PASSED  
>           sts_serial|  16|    100000|     100|0.99738144|   WEAK   
>          rgb_bitdist|   1|    100000|     100|0.87919615|  PASSED  
>          rgb_bitdist|   2|    100000|     100|0.44761036|  PASSED  
>          rgb_bitdist|   3|    100000|     100|0.93749723|  PASSED  
>          rgb_bitdist|   4|    100000|     100|0.97852659|  PASSED  
>          rgb_bitdist|   5|    100000|     100|0.49386643|  PASSED  
>          rgb_bitdist|   6|    100000|     100|0.36393996|  PASSED  
>          rgb_bitdist|   7|    100000|     100|0.15715927|  PASSED  
>          rgb_bitdist|   8|    100000|     100|0.99411086|  PASSED  
>          rgb_bitdist|   9|    100000|     100|0.08694454|  PASSED  
>          rgb_bitdist|  10|    100000|     100|0.96622762|  PASSED  
>          rgb_bitdist|  11|    100000|     100|0.96183097|  PASSED  
>          rgb_bitdist|  12|    100000|     100|0.22884121|  PASSED  
> rgb_minimum_distance|   2|     10000|    1000|0.72387178|  PASSED  
> rgb_minimum_distance|   3|     10000|    1000|0.00603242|  PASSED  
> rgb_minimum_distance|   4|     10000|    1000|0.99624783|   WEAK   
> rgb_minimum_distance|   5|     10000|    1000|0.01576410|  PASSED  
>     rgb_permutations|   2|    100000|     100|0.17348102|  PASSED  
>     rgb_permutations|   3|    100000|     100|0.55546289|  PASSED  
>     rgb_permutations|   4|    100000|     100|0.62075518|  PASSED  
>     rgb_permutations|   5|    100000|     100|0.25217983|  PASSED  
>       rgb_lagged_sum|   0|   1000000|     100|0.51727843|  PASSED  
>       rgb_lagged_sum|   1|   1000000|     100|0.70243611|  PASSED  
>       rgb_lagged_sum|   2|   1000000|     100|0.53421183|  PASSED  
>       rgb_lagged_sum|   3|   1000000|     100|0.52035100|  PASSED  
>       rgb_lagged_sum|   4|   1000000|     100|0.24503011|  PASSED  
>       rgb_lagged_sum|   5|   1000000|     100|0.63833384|  PASSED  
>       rgb_lagged_sum|   6|   1000000|     100|0.50651362|  PASSED  
>       rgb_lagged_sum|   7|   1000000|     100|0.25822921|  PASSED  
>       rgb_lagged_sum|   8|   1000000|     100|0.81153823|  PASSED  
>       rgb_lagged_sum|   9|   1000000|     100|0.34869206|  PASSED  
>       rgb_lagged_sum|  10|   1000000|     100|0.65180431|  PASSED  
>       rgb_lagged_sum|  11|   1000000|     100|0.99697389|   WEAK   
>       rgb_lagged_sum|  12|   1000000|     100|0.22410939|  PASSED  
>       rgb_lagged_sum|  13|   1000000|     100|0.11857725|  PASSED  
>       rgb_lagged_sum|  14|   1000000|     100|0.78762973|  PASSED  
>       rgb_lagged_sum|  15|   1000000|     100|0.87925340|  PASSED  
>       rgb_lagged_sum|  16|   1000000|     100|0.43917062|  PASSED  
>       rgb_lagged_sum|  17|   1000000|     100|0.34325119|  PASSED  
>       rgb_lagged_sum|  18|   1000000|     100|0.96939979|  PASSED  
>       rgb_lagged_sum|  19|   1000000|     100|0.41449812|  PASSED  
>       rgb_lagged_sum|  20|   1000000|     100|0.75966367|  PASSED  
>       rgb_lagged_sum|  21|   1000000|     100|0.15941056|  PASSED  
>       rgb_lagged_sum|  22|   1000000|     100|0.98158988|  PASSED  
>       rgb_lagged_sum|  23|   1000000|     100|0.46280042|  PASSED  
>       rgb_lagged_sum|  24|   1000000|     100|0.02967647|  PASSED  
>       rgb_lagged_sum|  25|   1000000|     100|0.09642163|  PASSED  
>       rgb_lagged_sum|  26|   1000000|     100|0.99726186|   WEAK   
>       rgb_lagged_sum|  27|   1000000|     100|0.98921756|  PASSED  
>       rgb_lagged_sum|  28|   1000000|     100|0.73094482|  PASSED  
>       rgb_lagged_sum|  29|   1000000|     100|0.86222518|  PASSED  
>       rgb_lagged_sum|  30|   1000000|     100|0.46468444|  PASSED  
>       rgb_lagged_sum|  31|   1000000|     100|0.67683290|  PASSED  
>       rgb_lagged_sum|  32|   1000000|     100|0.01549801|  PASSED  
>      rgb_kstest_test|   0|     10000|    1000|0.01380305|  PASSED  
>      dab_bytedistrib|   0|  51200000|       1|0.86564180|  PASSED  
>              dab_dct| 256|     50000|       1|0.84612537|  PASSED  
> Preparing to run test 207.  ntuple = 0
>         dab_filltree|  32|  15000000|       1|0.72226138|  PASSED  
>         dab_filltree|  32|  15000000|       1|0.58080945|  PASSED  
> Preparing to run test 208.  ntuple = 0
>        dab_filltree2|   0|   5000000|       1|0.54274308|  PASSED  
>        dab_filltree2|   1|   5000000|       1|0.23903654|  PASSED  
> Preparing to run test 209.  ntuple = 0
>         dab_monobit2|  12|  65000000|       1|0.62975258|  PASSED  
> 
> real    49m24.335s
> user    66m12.514s
> sys     4m4.277s



Teraz trzy testy wyszły na week. Nie zawsze zalicza 100%, ale to
chyba też byłoby źle, jakby zawsze zaliczał 100%.

time ./rnd | dieharder -a -g 200 -m 1
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
stdin_input_raw|  2.92e+07  | 657336847|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.51978154|  PASSED  
      diehard_operm5|   0|   1000000|     100|0.02735819|  PASSED  
  diehard_rank_32x32|   0|     40000|     100|0.33532130|  PASSED  
    diehard_rank_6x8|   0|    100000|     100|0.79371425|  PASSED  
   diehard_bitstream|   0|   2097152|     100|0.68124117|  PASSED  
        diehard_opso|   0|   2097152|     100|0.68866202|  PASSED  
        diehard_oqso|   0|   2097152|     100|0.37458338|  PASSED  
         diehard_dna|   0|   2097152|     100|0.54635854|  PASSED  
diehard_count_1s_str|   0|    256000|     100|0.76594407|  PASSED  
diehard_count_1s_byt|   0|    256000|     100|0.44717186|  PASSED  
 diehard_parking_lot|   0|     12000|     100|0.98308588|  PASSED  
    diehard_2dsphere|   2|      8000|     100|0.12634827|  PASSED  
    diehard_3dsphere|   3|      4000|     100|0.62849099|  PASSED  
     diehard_squeeze|   0|    100000|     100|0.09557059|  PASSED  
        diehard_sums|   0|       100|     100|0.03768856|  PASSED  
        diehard_runs|   0|    100000|     100|0.78405367|  PASSED  
        diehard_runs|   0|    100000|     100|0.63982786|  PASSED  
       diehard_craps|   0|    200000|     100|0.49249801|  PASSED  
       diehard_craps|   0|    200000|     100|0.82081113|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.98702113|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.81354312|  PASSED  
         sts_monobit|   1|    100000|     100|0.04559628|  PASSED  
            sts_runs|   2|    100000|     100|0.06735714|  PASSED  
          sts_serial|   1|    100000|     100|0.86875820|  PASSED  
          sts_serial|   2|    100000|     100|0.01367581|  PASSED  
          sts_serial|   3|    100000|     100|0.02130630|  PASSED  
          sts_serial|   3|    100000|     100|0.07270095|  PASSED  
          sts_serial|   4|    100000|     100|0.00184698|   WEAK   
          sts_serial|   4|    100000|     100|0.16202286|  PASSED  
          sts_serial|   5|    100000|     100|0.02830068|  PASSED  
          sts_serial|   5|    100000|     100|0.66563268|  PASSED  
          sts_serial|   6|    100000|     100|0.64045851|  PASSED  
          sts_serial|   6|    100000|     100|0.59510750|  PASSED  
          sts_serial|   7|    100000|     100|0.31989120|  PASSED  
          sts_serial|   7|    100000|     100|0.28961960|  PASSED  
          sts_serial|   8|    100000|     100|0.75304692|  PASSED  
          sts_serial|   8|    100000|     100|0.46796302|  PASSED  
          sts_serial|   9|    100000|     100|0.30215437|  PASSED  
          sts_serial|   9|    100000|     100|0.00799256|  PASSED  
          sts_serial|  10|    100000|     100|0.46336716|  PASSED  
          sts_serial|  10|    100000|     100|0.80892405|  PASSED  
          sts_serial|  11|    100000|     100|0.67418067|  PASSED  
          sts_serial|  11|    100000|     100|0.43149476|  PASSED  
          sts_serial|  12|    100000|     100|0.75439741|  PASSED  
          sts_serial|  12|    100000|     100|0.32292866|  PASSED  
          sts_serial|  13|    100000|     100|0.56243866|  PASSED  
          sts_serial|  13|    100000|     100|0.54792320|  PASSED  
          sts_serial|  14|    100000|     100|0.52609296|  PASSED  
          sts_serial|  14|    100000|     100|0.18384591|  PASSED  
          sts_serial|  15|    100000|     100|0.61107676|  PASSED  
          sts_serial|  15|    100000|     100|0.57321638|  PASSED  
          sts_serial|  16|    100000|     100|0.84058217|  PASSED  
          sts_serial|  16|    100000|     100|0.58139453|  PASSED  
         rgb_bitdist|   1|    100000|     100|0.53446145|  PASSED  
         rgb_bitdist|   2|    100000|     100|0.34162811|  PASSED  
         rgb_bitdist|   3|    100000|     100|0.16279293|  PASSED  
         rgb_bitdist|   4|    100000|     100|0.31500732|  PASSED  
         rgb_bitdist|   5|    100000|     100|0.06292185|  PASSED  
         rgb_bitdist|   6|    100000|     100|0.73961231|  PASSED  
         rgb_bitdist|   7|    100000|     100|0.46188424|  PASSED  
         rgb_bitdist|   8|    100000|     100|0.32464827|  PASSED  
         rgb_bitdist|   9|    100000|     100|0.19831248|  PASSED  
         rgb_bitdist|  10|    100000|     100|0.67721253|  PASSED  
         rgb_bitdist|  11|    100000|     100|0.08915635|  PASSED  
         rgb_bitdist|  12|    100000|     100|0.43030112|  PASSED  
rgb_minimum_distance|   2|     10000|    1000|0.68261439|  PASSED  
rgb_minimum_distance|   3|     10000|    1000|0.37463944|  PASSED  
rgb_minimum_distance|   4|     10000|    1000|0.14981210|  PASSED  
rgb_minimum_distance|   5|     10000|    1000|0.53445222|  PASSED  
    rgb_permutations|   2|    100000|     100|0.95179105|  PASSED  
    rgb_permutations|   3|    100000|     100|0.25601394|  PASSED  
    rgb_permutations|   4|    100000|     100|0.54606119|  PASSED  
    rgb_permutations|   5|    100000|     100|0.56387640|  PASSED  
      rgb_lagged_sum|   0|   1000000|     100|0.79720048|  PASSED  
      rgb_lagged_sum|   1|   1000000|     100|0.82565679|  PASSED  
      rgb_lagged_sum|   2|   1000000|     100|0.86417393|  PASSED  
      rgb_lagged_sum|   3|   1000000|     100|0.83889614|  PASSED  
      rgb_lagged_sum|   4|   1000000|     100|0.81349456|  PASSED  
      rgb_lagged_sum|   5|   1000000|     100|0.13104799|  PASSED  
      rgb_lagged_sum|   6|   1000000|     100|0.79948710|  PASSED  
      rgb_lagged_sum|   7|   1000000|     100|0.44301337|  PASSED  
      rgb_lagged_sum|   8|   1000000|     100|0.99736137|   WEAK   
      rgb_lagged_sum|   9|   1000000|     100|0.98881564|  PASSED  
      rgb_lagged_sum|  10|   1000000|     100|0.62999019|  PASSED  
      rgb_lagged_sum|  11|   1000000|     100|0.84197449|  PASSED  
      rgb_lagged_sum|  12|   1000000|     100|0.00067527|   WEAK   
      rgb_lagged_sum|  13|   1000000|     100|0.82887826|  PASSED  
      rgb_lagged_sum|  14|   1000000|     100|0.02476101|  PASSED  
      rgb_lagged_sum|  15|   1000000|     100|0.58311059|  PASSED  
      rgb_lagged_sum|  16|   1000000|     100|0.20474418|  PASSED  
      rgb_lagged_sum|  17|   1000000|     100|0.62528834|  PASSED  
      rgb_lagged_sum|  18|   1000000|     100|0.70292605|  PASSED  
      rgb_lagged_sum|  19|   1000000|     100|0.80745418|  PASSED  
      rgb_lagged_sum|  20|   1000000|     100|0.57387877|  PASSED  
      rgb_lagged_sum|  21|   1000000|     100|0.43509761|  PASSED  
      rgb_lagged_sum|  22|   1000000|     100|0.86538003|  PASSED  
      rgb_lagged_sum|  23|   1000000|     100|0.71679765|  PASSED  
      rgb_lagged_sum|  24|   1000000|     100|0.49306019|  PASSED  
      rgb_lagged_sum|  25|   1000000|     100|0.19308442|  PASSED  
      rgb_lagged_sum|  26|   1000000|     100|0.92551925|  PASSED  
      rgb_lagged_sum|  27|   1000000|     100|0.87231201|  PASSED  
      rgb_lagged_sum|  28|   1000000|     100|0.76689705|  PASSED  
      rgb_lagged_sum|  29|   1000000|     100|0.59585487|  PASSED  
      rgb_lagged_sum|  30|   1000000|     100|0.13559800|  PASSED  
      rgb_lagged_sum|  31|   1000000|     100|0.96278307|  PASSED  
      rgb_lagged_sum|  32|   1000000|     100|0.89176190|  PASSED  
     rgb_kstest_test|   0|     10000|    1000|0.01763895|  PASSED  
     dab_bytedistrib|   0|  51200000|       1|0.50830456|  PASSED  
             dab_dct| 256|     50000|       1|0.67515646|  PASSED  
Preparing to run test 207.  ntuple = 0
        dab_filltree|  32|  15000000|       1|0.33976227|  PASSED  
        dab_filltree|  32|  15000000|       1|0.25121708|  PASSED  
Preparing to run test 208.  ntuple = 0
       dab_filltree2|   0|   5000000|       1|0.90605904|  PASSED  
       dab_filltree2|   1|   5000000|       1|0.80515173|  PASSED  
Preparing to run test 209.  ntuple = 0
        dab_monobit2|  12|  65000000|       1|0.50979916|  PASSED  

real    49m31.976s
user    66m13.383s
sys     4m9.631s
Re: test randomizacyjny w C
#308745
Author: bartekltg
Date: Wed, 28 Sep 2016 11:09
34 lines
2951 bytes
On 27.09.2016 23:00, M.M. wrote:
> On Tuesday, September 27, 2016 at 10:40:12 PM UTC+2, Borneq wrote:
>> W dniu 27.09.2016 o 22:30, M.M. pisze:
>>> A tutaj testy z MT, wszystkie przeszedł. Test działał około 2 razy
>>> szybciej niż mojego generatora, ale MT nie korzystał z stdout, jest
>>> wkompilowany w diehardera.
>>
>> A możesz upublicznić kod swojego generatora?
>
> Nie ma co upubliczniać :)
>
> Ta ostatnia wersja to 5 generatorów fibonacciego. Jeden
> generator wybiera jeden z czterech.
>
> switch( rand1() % 4 ) {

To nie jest _tu_ bardzo istotne, ale taki sposób potrafi bardzo
popsuć losowość rand1. Ostatnie bity najczęśćeij są znacznie
mniej losowe. Doradzałbym podzielić (pewnie po prostu przesunąć
bitowo) najpierw do zakresu [0,3.999...].

>   case 0: return rand2();
>   case 1: return rand3();
>   case 2: return rand4();
>   case 3: return rand5();
> }

> Wszystkie rand1 do rand5 to generatory fibonaciego. Parametry dobrałem
> eksperymentalnie.

Obok zadałem pytanie dokąłdnie o to, nie musisz już na nie odpowiadać:)

pzdr
bartekltg
Re: test randomizacyjny w C
#308742
Author: bartekltg
Date: Wed, 28 Sep 2016 11:12
18 lines
2313 bytes
On 28.09.2016 00:37, M.M. wrote:

> Teraz trzy testy wyszły na week. Nie zawsze zalicza 100%, ale to

Spróbuj zwiękzyć psamples.


> chyba też byłoby źle, jakby zawsze zaliczał 100%.

   -W weak - sets the 'weak' threshold to make the test(s) more or less
forgiving during e.g. a test-to-destruction run.  Default is
currently  0.005.

Majac ciąg losowy, powinieneś zaliczać na week 1 na 100 testów (bo mamy
0.005 z obu stron). IMHO ciut za często wypadają.

pzdr
bartekltg
Re: test randomizacyjny w C
#308743
Author: M.M.
Date: Thu, 29 Sep 2016 16:16
156 lines
11660 bytes
On Wednesday, September 28, 2016 at 1:12:11 PM UTC+2, bartekltg wrote:
> On 28.09.2016 00:37, M.M. wrote:
> 
> > Teraz trzy testy wyszły na week. Nie zawsze zalicza 100%, ale to
> 
> Spróbuj zwiękzyć psamples.
> 
> 
> > chyba też byłoby źle, jakby zawsze zaliczał 100%.
> 
>    -W weak - sets the 'weak' threshold to make the test(s) more or less
> forgiving during e.g. a test-to-destruction run.  Default is
> currently  0.005.
> 
> Majac ciąg losowy, powinieneś zaliczać na week 1 na 100 testów (bo mamy
> 0.005 z obu stron). IMHO ciut za często wypadają.
> 
> pzdr
> bartekltg

Zrobiłem teraz z opcją -m2. Ta wersja generatora pierwszy raz 
oblała testy (failed). Ciekawe czy nie tak coś z systemem, czy te testy
wychwyciły jakąś usterkę. Będę musiał poczytać co to za testy, bo
diehard_sums jest testem uszkodzonym.


time ./rnd | dieharder -a -g 200 -m 2
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
stdin_input_raw|  2.66e+07  |3773020894|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     200|0.88183284|  PASSED  
      diehard_operm5|   0|   1000000|     200|0.78844761|  PASSED  
  diehard_rank_32x32|   0|     40000|     200|0.93121347|  PASSED  
    diehard_rank_6x8|   0|    100000|     200|0.06642463|  PASSED  
   diehard_bitstream|   0|   2097152|     200|0.58948791|  PASSED  
        diehard_opso|   0|   2097152|     200|0.73872549|  PASSED  
        diehard_oqso|   0|   2097152|     200|0.46633233|  PASSED  
         diehard_dna|   0|   2097152|     200|0.25500365|  PASSED  
diehard_count_1s_str|   0|    256000|     200|0.43566212|  PASSED  
diehard_count_1s_byt|   0|    256000|     200|0.46587453|  PASSED  
 diehard_parking_lot|   0|     12000|     200|0.18055306|  PASSED  
    diehard_2dsphere|   2|      8000|     200|0.16422401|  PASSED  
    diehard_3dsphere|   3|      4000|     200|0.39103053|  PASSED  
     diehard_squeeze|   0|    100000|     200|0.83288106|  PASSED  
        diehard_sums|   0|       100|     200|0.02252189|  PASSED  
        diehard_runs|   0|    100000|     200|0.10983012|  PASSED  
        diehard_runs|   0|    100000|     200|0.19405475|  PASSED  
       diehard_craps|   0|    200000|     200|0.43042854|  PASSED  
       diehard_craps|   0|    200000|     200|0.76805090|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     200|0.46240879|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     200|0.68672229|  PASSED  
         sts_monobit|   1|    100000|     200|0.97285659|  PASSED  
            sts_runs|   2|    100000|     200|0.65501914|  PASSED  
          sts_serial|   1|    100000|     200|0.91174555|  PASSED  
          sts_serial|   2|    100000|     200|0.87582280|  PASSED  
          sts_serial|   3|    100000|     200|0.73260864|  PASSED  
          sts_serial|   3|    100000|     200|0.49676796|  PASSED  
          sts_serial|   4|    100000|     200|0.65790427|  PASSED  
          sts_serial|   4|    100000|     200|0.88168466|  PASSED  
          sts_serial|   5|    100000|     200|0.40218072|  PASSED  
          sts_serial|   5|    100000|     200|0.45305118|  PASSED  
          sts_serial|   6|    100000|     200|0.93523098|  PASSED  
          sts_serial|   6|    100000|     200|0.72142980|  PASSED  
          sts_serial|   7|    100000|     200|0.27957428|  PASSED  
          sts_serial|   7|    100000|     200|0.71041634|  PASSED  
          sts_serial|   8|    100000|     200|0.96141922|  PASSED  
          sts_serial|   8|    100000|     200|0.13571238|  PASSED  
          sts_serial|   9|    100000|     200|0.13667556|  PASSED  
          sts_serial|   9|    100000|     200|0.02556405|  PASSED  
          sts_serial|  10|    100000|     200|0.39112861|  PASSED  
          sts_serial|  10|    100000|     200|0.57434270|  PASSED  
          sts_serial|  11|    100000|     200|0.58387429|  PASSED  
          sts_serial|  11|    100000|     200|0.87011458|  PASSED  
          sts_serial|  12|    100000|     200|0.31562000|  PASSED  
          sts_serial|  12|    100000|     200|0.20552228|  PASSED  
          sts_serial|  13|    100000|     200|0.28337853|  PASSED  
          sts_serial|  13|    100000|     200|0.05140514|  PASSED  
          sts_serial|  14|    100000|     200|0.18452146|  PASSED  
          sts_serial|  14|    100000|     200|0.96440906|  PASSED  
          sts_serial|  15|    100000|     200|0.82978818|  PASSED  
          sts_serial|  15|    100000|     200|0.90805129|  PASSED  
          sts_serial|  16|    100000|     200|0.67120585|  PASSED  
          sts_serial|  16|    100000|     200|0.91377607|  PASSED  
         rgb_bitdist|   1|    100000|     200|0.71495956|  PASSED  
         rgb_bitdist|   2|    100000|     200|0.63823253|  PASSED  
         rgb_bitdist|   3|    100000|     200|0.76977046|  PASSED  
         rgb_bitdist|   4|    100000|     200|0.74355417|  PASSED  
         rgb_bitdist|   5|    100000|     200|0.89141872|  PASSED  
         rgb_bitdist|   6|    100000|     200|0.76686776|  PASSED  
         rgb_bitdist|   7|    100000|     200|0.97351199|  PASSED  
         rgb_bitdist|   8|    100000|     200|0.08488770|  PASSED  
         rgb_bitdist|   9|    100000|     200|0.78878202|  PASSED  
         rgb_bitdist|  10|    100000|     200|0.59495552|  PASSED  
         rgb_bitdist|  11|    100000|     200|0.81298116|  PASSED  
         rgb_bitdist|  12|    100000|     200|0.11707709|  PASSED  
rgb_minimum_distance|   2|     10000|    2000|0.11561304|  PASSED  
rgb_minimum_distance|   3|     10000|    2000|0.33742989|  PASSED  
rgb_minimum_distance|   4|     10000|    2000|0.59541728|  PASSED  
rgb_minimum_distance|   5|     10000|    2000|0.46253443|  PASSED  
    rgb_permutations|   2|    100000|     200|0.86455043|  PASSED  
    rgb_permutations|   3|    100000|     200|0.97835854|  PASSED  
    rgb_permutations|   4|    100000|     200|0.33014477|  PASSED  
    rgb_permutations|   5|    100000|     200|0.31175472|  PASSED  
      rgb_lagged_sum|   0|   1000000|     200|0.81389271|  PASSED  
      rgb_lagged_sum|   1|   1000000|     200|0.19827647|  PASSED  
      rgb_lagged_sum|   2|   1000000|     200|0.97435912|  PASSED  
      rgb_lagged_sum|   3|   1000000|     200|0.95077179|  PASSED  
      rgb_lagged_sum|   4|   1000000|     200|0.24292646|  PASSED  
      rgb_lagged_sum|   5|   1000000|     200|0.07752734|  PASSED  
      rgb_lagged_sum|   6|   1000000|     200|0.95920559|  PASSED  
      rgb_lagged_sum|   7|   1000000|     200|0.84826861|  PASSED  
      rgb_lagged_sum|   8|   1000000|     200|0.62080887|  PASSED  
      rgb_lagged_sum|   9|   1000000|     200|0.74418421|  PASSED  
      rgb_lagged_sum|  10|   1000000|     200|0.31031965|  PASSED  
      rgb_lagged_sum|  11|   1000000|     200|0.75890678|  PASSED  
      rgb_lagged_sum|  12|   1000000|     200|0.60691480|  PASSED  
      rgb_lagged_sum|  13|   1000000|     200|0.93206648|  PASSED  
      rgb_lagged_sum|  14|   1000000|     200|0.82476992|  PASSED  
      rgb_lagged_sum|  15|   1000000|     200|0.93260763|  PASSED  
      rgb_lagged_sum|  16|   1000000|     200|0.37656652|  PASSED  
      rgb_lagged_sum|  17|   1000000|     200|0.47084015|  PASSED  
      rgb_lagged_sum|  18|   1000000|     200|0.19009059|  PASSED  
      rgb_lagged_sum|  19|   1000000|     200|0.72621940|  PASSED  
      rgb_lagged_sum|  20|   1000000|     200|0.88861137|  PASSED  
      rgb_lagged_sum|  21|   1000000|     200|0.95836029|  PASSED  
      rgb_lagged_sum|  22|   1000000|     200|0.18462047|  PASSED  
      rgb_lagged_sum|  23|   1000000|     200|0.55153799|  PASSED  
      rgb_lagged_sum|  24|   1000000|     200|0.91580121|  PASSED  
      rgb_lagged_sum|  25|   1000000|     200|0.80164732|  PASSED  
      rgb_lagged_sum|  26|   1000000|     200|0.90938828|  PASSED  
      rgb_lagged_sum|  27|   1000000|     200|0.05474990|  PASSED  
      rgb_lagged_sum|  28|   1000000|     200|0.86729169|  PASSED  
      rgb_lagged_sum|  29|   1000000|     200|0.06621680|  PASSED  
      rgb_lagged_sum|  30|   1000000|     200|0.51441888|  PASSED  
      rgb_lagged_sum|  31|   1000000|     200|0.79039240|  PASSED  
      rgb_lagged_sum|  32|   1000000|     200|0.91244840|  PASSED  
     rgb_kstest_test|   0|     10000|    2000|0.43638657|  PASSED  
     dab_bytedistrib|   0|  51200000|       2|1.00000000|  FAILED  
             dab_dct| 256|     50000|       2|1.00000000|  FAILED  
Preparing to run test 207.  ntuple = 0
        dab_filltree|  32|  15000000|       2|1.00000000|  FAILED  
        dab_filltree|  32|  15000000|       2|1.00000000|  FAILED  
Preparing to run test 208.  ntuple = 0
       dab_filltree2|   0|   5000000|       2|1.00000000|  FAILED  
       dab_filltree2|   1|   5000000|       2|0.88071880|  PASSED  
Preparing to run test 209.  ntuple = 0
        dab_monobit2|  12|  65000000|       2|0.96901030|  PASSED  

real    103m53.769s
user    136m58.088s
sys     8m34.446s
Re: test randomizacyjny w C
#308744
Author: M.M.
Date: Fri, 30 Sep 2016 13:13
37 lines
3686 bytes
On Thursday, September 29, 2016 at 6:16:09 PM UTC+2, M.M. wrote:
> On Wednesday, September 28, 2016 at 1:12:11 PM UTC+2, bartekltg wrote:
> > On 28.09.2016 00:37, M.M. wrote:
> > 
> > > Teraz trzy testy wyszły na week. Nie zawsze zalicza 100%, ale to
> > 
> > Spróbuj zwiękzyć psamples.
> > 
> > 
> > > chyba też byłoby źle, jakby zawsze zaliczał 100%.
> > 
> >    -W weak - sets the 'weak' threshold to make the test(s) more or less
> > forgiving during e.g. a test-to-destruction run.  Default is
> > currently  0.005.
> > 
> > Majac ciąg losowy, powinieneś zaliczać na week 1 na 100 testów (bo mamy
> > 0.005 z obu stron). IMHO ciut za często wypadają.
> > 
> > pzdr
> > bartekltg
> 
> Zrobiłem teraz z opcją -m2. Ta wersja generatora pierwszy raz 
> oblała testy (failed). Ciekawe czy nie tak coś z systemem, czy te testy
> wychwyciły jakąś usterkę. Będę musiał poczytać co to za testy, bo
> diehard_sums jest testem uszkodzonym.

Po resecie systemu wszystko (chyba) wróciło do normy :)
Inne programy padały, czułem że coś nie tak ze środowiskiem
testowym. Gdy ustawiam m=1 to średnio weak jest raz 
na 30 testów, ani razu nie było failed.

Źródło tego testu niby można poczytać tam:
https://github.com/seehuhn/dieharder/blob/master/libdieharder/dab_bytedistrib.c

Ale nie tak łatwo ogarnąć czy kod jest poprawny, czy nie.

Pozdrawiam
Page 1 of 2 • 78 total messages
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads