Aleatorio o no
- CodeUP Universidad del Pacífico
- 11 sept 2020
- 4 Min. de lectura
Alguna vez te preguntaste cómo trabaja la función aleatorio de Excel o la función randint() de la librería random para Python. Esa es una buena pregunta. Acompáñame en esta lectura de 3 min hecha con cariño y muchas correcciones para conocer un poco más aquello que se encuentra oculto a simple vista.
Para empezar, debemos definir que es un número aleatorio y un número pseudoaleatorio. Un número generado aleatoriamente se asocia a un proceso el cual no es previsible de ninguna manera. Un ejemplo básico es el lanzamiento de un dado de 6 caras iguales inalteradas, se puede calcular la probabilidad de un evento, pero no se puede determinar el resultado hasta que suceda.
Mientras que un número pseudoaleatorio, que son las funciones a las que hacemos referencia, cada vez que son invocadas, devuelven un valor de una secuencia de números predeterminada. Esta secuencia tiene un periodo bastante largo; es decir, es necesario obtener muchos números antes de que se vuelva a reproducir la misma secuencia.De ahí es de donde proviene el tratamiento de pseudo (o falso), aunque la utilidad que nos ofrezca sea equivalente al de los números aleatorios. Durante una clase de estadística recuerdo realizar la siguiente pregunta: “Pero entonces el factor aleatorio usado en algún estudio no es aleatorio si sabes cómo se generan los valores”. A lo que el profesor me respondió “Siempre y cuando no modifiques los resultados y no tengas en cuenta el como se generan los valores pseudoaleatorios este valor se puede considerar aleatorio” (En un intento de parafraseo).
Entonces, los generadores de números aleatorios verdaderos se basan en procesos naturales que evolucionan de manera impredecible. En ellos, aunque se pueda tener una idea global de lo que puede suceder, tener la certeza absoluta de lo que ocurrirá en cada momento es imposible y por ello las secuencias de valores que generan tienen una bajísima probabilidad de repetirse.
Por el otro lado, si no podemos crear un generador de números aleatorios verdaderos como aparecen los valores aleatorios cuando usamos las diferentes funciones.
-MERSENNE TWISTER-
El generador de números pseudoaleatorios más usado y respetado por su calidad es Mersenne twister desarrollado en 1997 por Makoto Matsumoto (松本 眞) y Takuji Nishimura (西村 拓士). Su nombre proviene del hecho de que la longitud del periodo corresponde a un número primo de Mersenne. La versión disponible en la mayoría de lenguajes de programación (MT19937), el cual tiene un periodo de 219937-1. La secuencia del periodo define cuánto debe pasar para que se repita el mismo valor. Hay bastantes valores en el medio…….. Te invito a conocer e indagar mas acerca de como funciona
-LIBRERÍA RANDOM EN PY FUNCIONES-
Si creías que todo iba a ser teoría, pues tienes razón. Pero no te preocupes que te presentamos una lista con las funciones de la librería random para Python
La función randint(a, b) devuelve un número entero incluido entre los valores indicados. Los valores de los límites inferior y superior también pueden aparecer entre los valores devueltos
La función randrange(a, b, c) devuelve enteros que van desde un valor inicial a otro final separados entre sí un número de valores determinados. Esta separación (o paso) se utiliza en primer lugar con el valor inicial para calcular el siguiente valor y los sucesivos hasta llegar al valor final o al más cercano posible
La función random() devuelve un número float entre 0 y 1
La función uniform(a, b) devuelve un número float incluido entre los valores indicados
Cuando interese obtener varias veces la misma secuencia de números pseudoaleatoria se puede utilizar la función seed(a) que fija mediante una "semilla" el mismo comienzo en cada secuencia, permitiendo con ello obtener series con los mismos valores.
La función choice(lista) se utiliza para seleccionar elementos al azar de una lista.
La función shuffle(lista) 'mezcla' o cambia aleatoriamente el orden de los elementos de una lista antes de realizar la selección de alguno de ellos. Esta mezcla recuerda en el caso de los juegos de cartas la acción de barajar un número de veces antes de repartir o seleccionar cartas
La función sample(lista, n) devuelve de una lista de elementos un determinado número de elementos (n) diferentes elegidos al azar.
Si todavía quieres conocer que más puede generar la librería puedes entrar al siguiente link y seguir ganando conocimiento
-CONCLUSIÓN CON PREGUNTA ABIERTA-
En resumen, consideramos y usábamos como aleatorio aquello que no es más que una sucesión de operaciones y en cierta cantidad de interacciones volvería al mismo valor. Lo cual debería hacernos pensar en el comportamiento de los seres humanos. Nosotros somos predecibles o nuestro comportamiento es al azar. Pues déjame decirte que los humanos en realidad son bastante predecibles siempre y cuando se conozca el estado inicial. Esto nos lleva a tres distintos temas: Sistemas Dinámicos, la Teoría del Caos y el Efecto Mariposa. Pero esos son temas para otro artículo
Ya finalizando esta pequeña travesía y como última invitación, no te quedes con lo que acabas de leer. Ve más allá de lo evidente y pregúntate que está detrás de aquello que damos por hecho. Tal vez este artículo era predecible desde que lleve Esta 1 o tal vez no. Gracias por leer hasta aquí y nos vemos en la próxima publicación de CODE UP.
Escrito por : Benjamin Arriaga
Comments