# gaptest: the Gap test In randtoolbox: Toolbox for Pseudo and Quasi Random Number Generation and RNG Tests

## Description

The Gap test for testing random number generators.

## Usage

 `1` ```gap.test(u, lower = 0, upper = 1/2, echo = TRUE) ```

## Arguments

 `u` sample of random numbers in ]0,1[. `lower` numeric for the lower bound, default `0`. `upper` numeric for the upper bound, default `1/2`. `echo` logical to plot detailed results, default `TRUE`

## Details

We consider a vector `u`, realisation of i.i.d. uniform random variables U1... Un.

The gap test works on the 'gap' variables defined as

1 if lower <= Ui <= upper, 0 otherwise.

Let p the probability that Gi equals to one. Then we compute the length of zero gaps and denote by nj the number of zero gaps of length j. The chi-squared statistic is given by

S = ∑_{j=0}^m (n_j - n p_j)^2/[n p_j],

where pj 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 floor( ( log( 10^(-1) ) - 2log( 1-p )-log(n) ) / log( p ) ).

## Value

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).

## Author(s)

Christophe Dutang.

## References

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. (available online)

L'Ecuyer P. (2007), Test U01: a C library for empirical testing of random number generators. ACM Trans. on Mathematical Software 33(4), 22.

other tests of this package `freq.test`, `serial.test`, `poker.test`, `order.test` and `coll.test`
`ks.test` for the Kolmogorov Smirnov test and `acf` for the autocorrelation function.
 ```1 2 3 4 5 6 7 8``` ```# (1) # gap.test(runif(1000)) print( gap.test( runif(1000000), echo=FALSE ) ) # (2) # gap.test(runif(1000), 1/3, 2/3) ```