lunes, 1 de julio de 2013

Análisis de Números Pseudoaletorios 

Para la generación de números pseudoaleatorios existen varias métodos adema de poder implementar los propios, pero para poder tener una generación considerablemente aleatoria de números se realizan diversas pruebas, entre ellas pruebas de correlación, pruebas de frecuencia.

La mayoría de los generadores utilizados en software comerciales pasan por lo menos dos pruebas para mantener la confiabilidad de la pseudoaleatoridad, por lo decidí aplicar las dos pruebas anteriormente mencionada a los generadores de números pseudoaleatorios nativos de diversos lenguajes de programación (c, java, python y ruby), con ello verificar que pasen las pruebas de generación de números pseudoaleatorios para su frecuencia y correlación.

Los métodos aplicados son:

  • Kolmogorov-Smirnov
  • Prueba de Series
Código de Prueba de Series
Código de Prueba Kolmogorov-Smirnov
Código de pruebas implementadas


Las pruebas se corrieron tres veces así como su generación de números pseudoaleatorios, a continuación muestro los resultados de las corridas al cual le paso como parametro el archivo generado por cierto lenguaje y un valor n para la prueba de series, cada archivo contiene 20000 números pseudoaleatiros entre 0 y 1 excluyendo este ultimo.

Nota: valor de tablas para la prueba de series ejecutada es de 7.81

En conclusión al ver que los generadores de ruby y python mantienen los resultados de las pruebas en valores bajos, mientras que java pasa de valores bajos a valores altos (en prueba de series) , a diferencia de la prueba de frecuencia (Kolmogorov-Smirnov) que se mantiene con poca variación, mientras que c al no modificar la semilla inicial no realiza ningún cambio, se utilizo el 1 como semilla, ademas en c es el único que se encontró números repetidos.

Podríamos decir que los generadores de ruby y python son los que dieron mejores resultados, en cuanto a las pruebas de frecuencia y correlaciones, por lo cual se puede decir que genera valores distribuidos y con buen grado de aleatoriedad ya que los valores de pruebas de series se mantienen bajos, así como la prueba Kolmogorov-Smirnov.

Mejoras Futuras:


  • Otorgar el valor de Tablas para la comparación final de aprobación de los números pseudoaleatorios.
  • Realizar pruebas con algunos otros lenguajes y probar mas corridas.
  • Crear método para correr automáticamente n cantidad de corridas ademas de especificar todos los archivos y no probar uno a uno.

Bibliografia

Presentación de números aleatorios, generación y pruebas

Métodos para probar números aleatorios

Gráficas con Python y Gnuplot

1 comentario:

  1. Gnuplot <3

    Hubiera sido bueno resumir un poco qué en sí comprueban los tests que elegiste y cómo lo hacen. Ahora es puro código en realidad.

    Bastante bien; 6 pts.

    ResponderEliminar