The Serial test for testing random number generators.
serial.test(u , d = 8, echo = TRUE)
a list with the following components :
statistic
the value of the chi-squared statistic.
p.value
the p-value of the test.
observed
the observed counts.
expected
the expected counts under the null hypothesis.
residuals
the Pearson residuals, (observed - expected) / sqrt(expected).
sample of random numbers in ]0,1[.
logical to plot detailed results, default TRUE
a numeric for the dimension, see details. When necessary
we assume that d
is a multiple of the length of u
.
Christophe Dutang.
We consider a vector u
, realisation of i.i.d. uniform random
variables \(U_1, \dots, U_n\).
The serial test computes a serie of integer pairs \((p_i,p_{i+1})\)
from the sample u
with \(p_i = \lfloor u_i d\rfloor\) (u
must have an even length).
Let \(n_j\) be the number of pairs such that
\(j=p_i \times d + p_{i+1}\). If d=2
, we count
the number of pairs equals to \(00, 01, 10\) and \(11\). Since
all the combination of two elements in \(\{0, \dots, d-1\}\)
are equiprobable, the chi-squared statistic is
$$ S = \sum_{j=0}^{d-1} \frac{n_j - n/(2 d^2))^2}{n/(2 d^2)}.
$$
Planchet F., Jacquemin J. (2003), L'utilisation de methodes de simulation en assurance. Bulletin Francais d'Actuariat, vol. 6, 11, 3-69. (available online)
L'Ecuyer P. (2001), Software for uniform random number generation distinguishing the good and the bad. Proceedings of the 2001 Winter Simulation Conference. tools:::Rd_expr_doi("10.1109/WSC.2001.977250")
L'Ecuyer P. (2007), Test U01: a C library for empirical testing of random number generators. ACM Trans. on Mathematical Software 33(4), 22. tools:::Rd_expr_doi("10.1145/1268776.1268777")
# (1)
#
serial.test(runif(1000))
print( serial.test( runif(1000000), d=2, e=FALSE) )
# (2)
#
serial.test(runif(5000), 5)
Run the code above in your browser using DataLab