La aleatoriedad de una secuencia de números (sin que importe cómo fueron generados) no se prueba sólo mirándolos. Debe aplicarse uno (o mejor varios) test de aleatoriedad. Y sólo si estas pruebas lo confirman, puede decirse que dicha secuencia “pseudo aleatoria” puede ser considerada aleatoria.Por otro lado, un generador de números pseudo aleatorios, como su nombre lo dice, debe ser reproducible (antítesis de aleatoriedad, por cierto). Para ello, la función debe ser inicializada por una semilla (seed) que es la que es tomada de algún lugar como, como bien ha hecho, los nanosegundos del reloj. Pero el generador sólo toma ese valor sola vez par inicializar el proceso. Luego ejecuta un loop que, en base a algún procedimiento debidamente estudiado y probado, genere, en cada iteración, un número pseudo random que, en definitiva es una función de la semilla. Algunos procedimientos conocidos son congruencias lineales, basados en números de Fibonacci o los más recientes Mersenne Twister o Blum Blum Shub. Todos ellos, generalmente a partir de una semilla inicial, generan secuencia de números (generalmente enteros) que, por definición de generador pseudo aleatorio, son reproducibles. O sea, que siempre es posible generar secuencia iguales. Los diferentes métodos aseguran longitudes máximas de números que puedan ser considerados aleatorios. Un uso interesante de secuencias muy largar de números pseudo aleatorios es en los casinos electrónicos para simular las tiradas de cartas o números de ruletas. Secuencias cortas generas rachas predecibles que sesgan la aleatoriedad de las cartas o bolas de ruletas y podrían perjudicar (o beneficiar) tanto a jugadores como a la banca. Estos generadores seguros y probados se utilizan en experimentos como simuladores de clima o reactores atómicos. E intervienen muchísimo en disciplinas como la critografía. Más aún, se habla de generadores pseudo aleatorios de calidad criptográfica. El método de Mersenne es el que actualmente utilizan los generadores de Python y sus principales librerías. Busquen en Wikipedia “Generador de números pseudo aleatorios”. El ejemplo que haz planteado inicializa la semilla en cada iteración. En consecuencia, no es posible reproducir la secuencia. Que es una característica fundamental y excluyente de los generados pseudo random. Además, no asegura que la secuencia, en el rango que hayas especificado (en tu caso 0 a 100), esté uniformemente distribuida, condición, ésta, indispensable para que la secuencia sea considerada aleatoria. O sea, que todos los elementos tengan la misma probabilidad de ocurrir. En tu caso, cada uno de los 100 números diferentes generados tengan, cada uno de ellos, una probabilidad 0.01. O sea, que cada uno aparezca el 1% de las veces. Que sigan una distribución U(0,1). Para probarlo, puedes aplicar las tradicionales pruebas de Chi-cuadrado o Kolmorov-Smirnoff. Pruebas específicas de aleatoriedad como la trasformada de Hadamard, para secuencias binarias.
@hxtechno35699 ай бұрын
Como programa ultra sencillo esta perfecto, no obstante, la aleatoriedad en la informática es un tema mas complejo y crear un programa el cual genere números pseudoaleatorios seguros y de calidad puede ser mucho más complicado.
@Devxcuba5 ай бұрын
Así es amigo en Criptografía se va mucho más allá y no es tan sencillo, a las secuencias de salida suelen hacerles muchas pruebas estadísticas para comprobar la calidad de la misma, para los que quieren saber mas revisen la Suite de TEST del NIST y las pruebas que contempla
@__harumin6014 Жыл бұрын
que buena solucion! creo que nunca se me hubiera ocurrido
@Charly-Flores-Dev Жыл бұрын
Saludos !! Sal-coah mx
@tabithaflowers42011 ай бұрын
Me funciona la solucion, pero despues d eintentar con muchas, tengo un problema, se me repiten si invoco a la funcion varias veces