Generación de números pseudoaleatorios en Python, Java y C#
¿Que es un numero pseudoaleatorio?
Los números pseudoaleatorios son aquellos generados por un proceso que aparenta la producción de números aleatorios cuando no son aleatorios realmente, esta secuencia de números no muestra ningún patrón desde un punto de vista estadístico.
Codigo
Utilizando los lenguajes de Python, Java y C# determinaremos que tan efectivos son cada uno para darnos números pseudoaleatorios basándonos en la "Distribucion Uniforme" nos dice que los resultados aleatorios de variables continuas tienen la misma probabilidad.
Python
Java
C#
Como se pudo observar en los códigos se generaron 20000 números aleatorios de 0 y 1 y se realizo 18 corridas de dichos programas, los resultados de la celda superior es la cantidad de 1 obtenidos y la celda inferior son los 0:
Sacando un promedio y porcentaje se obtuvo los siguientes resultados:
En Gráfica:
Python
Java
C#
Como se pudo observar en los códigos se generaron 20000 números aleatorios de 0 y 1 y se realizo 18 corridas de dichos programas, los resultados de la celda superior es la cantidad de 1 obtenidos y la celda inferior son los 0:
Corridas | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
Python | 10092 | 9936 | 10039 | 9993 | 9835 | 9984 | 10029 | 10021 | 10037 |
9908 | 10064 | 9961 | 10007 | 10165 | 10016 | 9971 | 9979 | 9963 | |
Java | 9940 | 9985 | 9942 | 10047 | 10079 | 10040 | 9933 | 10020 | 9871 |
10060 | 10015 | 10058 | 9953 | 9921 | 9960 | 10067 | 9980 | 10129 | |
C# | 9957 | 9944 | 10027 | 9961 | 9998 | 10014 | 10066 | 9965 | 10034 |
10043 | 10056 | 9973 | 10039 | 10002 | 9986 | 9934 | 10035 | 9966 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
---|---|---|---|---|---|---|---|---|
9875 | 9839 | 9923 | 10000 | 10181 | 9915 | 10001 | 10017 | 9919 |
10125 | 10161 | 10077 | 10000 | 9819 | 10085 | 9999 | 9983 | 10081 |
9962 | 9891 | 9940 | 10137 | 10052 | 9945 | 9874 | 9946 | 10090 |
10038 | 10109 | 10060 | 9863 | 9948 | 10055 | 10126 | 10054 | 9910 |
9865 | 9870 | 10073 | 10026 | 10029 | 10116 | 10016 | 9958 | 10138 |
10135 | 10130 | 9927 | 9974 | 9971 | 9884 | 9984 | 10042 | 9862 |
Sacando un promedio y porcentaje se obtuvo los siguientes resultados:
1 | 0 | |
---|---|---|
Python | 49.89888889 | 50.10111111 |
Java | 49.915 | 50.085 |
C# | 49.98416667 | 50.01583333 |
En Gráfica:
Conclusion
El lenguaje C# estuvo mas cercano a lo descrito por la "Distribución Uniforme" ya que acorde a esta, ambos números deben de tener la misma probabilidad de salir.
Bibliografia
Libro: Python al descubierto Autor: Arturo Fernández Montoro
Libro: Visual C# 3 Edición Autor: Javier Ceballos
Titulo: Números Pseudoaleatorios
URL: https://es.wikipedia.org/wiki/N%C3%BAmero_pseudoaleatorio
Titulo: Distribucion Uniforme Continua
URL: http://es.wikipedia.org/wiki/Distribuci%C3%B3n_uniforme_continua
Libro: Visual C# 3 Edición Autor: Javier Ceballos
Titulo: Números Pseudoaleatorios
URL: https://es.wikipedia.org/wiki/N%C3%BAmero_pseudoaleatorio
Titulo: Distribucion Uniforme Continua
URL: http://es.wikipedia.org/wiki/Distribuci%C3%B3n_uniforme_continua
Como ya le comenté a Alma, lo que están probando es la pura uniformidad, que en sí no es aleatoriedad ;)
ResponderEliminarNP D-H.
ResponderEliminar