jueves, 11 de agosto de 2011

Probar si un numeros es aleatorio

Para probar si un número es aleatorio de manera seria o profesional, el número debe pasar a través de diferentes pruebas estadísticas reconocidas. Estas pruebas son creadas con la intención de probar los resultados de generadores de números aleatorios.


El US National Institute of Standards and Technology (NIST) provee una lista de pruebas estandar, al igual que otras organizaciones.

Charmaine  (2005, Charmaine Kenny) recomienda la siguiente lista de pruebas del NIST :
  • Frequency Test: Monobit
  • Frequency Test: Block
  • Runs Test
  • Test for the Longest Runs of Ones in a Block
  • Binary Matrix Rank Test
  • Discrete Fourier Transform (Spectral Test)
  • Non-Overlapping Template Matching Test
  • Overlapping Template Matching Test
  • Maurer's Universal Statistical Test
  • Linear Complexity Test
  • Serial Test
  • Approximate Entropy Test
  • Cumulative Sums Test
  • Random Excursions Test
  • Random Excursions Variant Test
Foley (2001, Louise Foley) recomienda también una lista reducida de pruebas utilizadas por random.org.


  • A chi-square test
  • A test of runs above and below the median
  • A reverse arrangements test
  • An overlapping sums test
  • A binary rank test for 32×32 matrices

Información referente a las pruebas se puede encontrar en http://www.random.org y más específicamente en http://www.random.org/analysis/


Pruebas de corridas (runs test)

Una de las más conocidas es runs test también llamada Wald–Wolfowitz test, (http://en.wikipedia.org/wiki/Wald-Wolfowitz_runs_test).

Para el lenguaje python se puede utilizar el modulo  Skid Marks para revisar secuencias de corridas en numeros binarios disponible en http://pypi.python.org/pypi/skidmarks/ . Este modulo implementa algunas funciones para revisar aleatoriedad en secuencias, en algunos casos, se asume una secuencia binaria, no únicamente unos y ceros.

Igualmente diferentes modulos han sido desarrollados para otros lenguajes o paquetes.

Para matlab
http://www.mathworks.com/help/toolbox/stats/runstest.html

DIEHARD, mantenido por George Marsaglia ofrece un conjunto de pruebas en varios lenguajes y sistemas operativos

http://www.stat.fsu.edu/pub/diehard/

Más información:


Testing Randomness de  Andrew Rukhin

http://www.math.umbc.edu/~rukhin/papers/talk.pdf

Proyectos 2024. Desarrollo de Aplicaciones Móviles. UAT-FIC

Profesor: Dr. Juan José Garza Saldaña   Facultad de Ingeniería y Ciencias Universidad Autónoma de Tamaulipas Los estudiantes de la materia d...