The Gap test for testing random number generators.
gap.test(u, lower = 0, upper = 1/2, 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[.
numeric for the lower bound, default 0
.
numeric for the upper bound, default 1/2
.
logical to plot detailed results, default TRUE
Christophe Dutang.
We consider a vector u
, realisation of i.i.d. uniform random
variables \(U_1, \dots, U_n\).
The gap test works on the 'gap' variables defined as $$ G_ i = \left\{ \begin{array}{cl} 1 & \textrm{if~} lower \leq U_i \leq upper\\ 0 & \textrm{otherwise}\\ \end{array} \right. $$ Let \(p\) the probability that \(G_i\) equals to one. Then we compute the length of zero gaps and denote by \(n_j\) the number of zero gaps of length \(j\). The chi-squared statistic is given by $$ S = \sum_{j=1}^m \frac{(n_j - n p_j)^2}{n p_j}, $$ where \(p_j\) stands for the probability the length of zero gaps equals to \(j\) (\( (1-p)^2 p^j \)) and \(m\) the max number of lengths (at least \(\left\lfloor \frac{ \log( 10^{-1} ) - 2\log(1- p)-log(n) }{ \log( p )} \right\rfloor \) ).
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)
#
gap.test(runif(1000))
print( gap.test( runif(1000000), echo=FALSE ) )
# (2)
#
gap.test(runif(1000), 1/3, 2/3)
Run the code above in your browser using DataLab