Random, es un adjetivo del ingles que traduce aleatorio (al azar), si estas interesado en el aprendizaje del idioma ingles te invito a visitar este blog, https://learning-english-in-colombia.blogspot.com/
1.2.3 ¿Existe aleatoriedad real en las computadoras?
Otro módulo que vale la pena mencionar es el que se llama
Ofrece algunos mecanismos que permiten operar con números pseudoaleatorios.
Toma en cuenta el prefijo pseudo - los números generados por los módulos pueden parecer aleatorios en el sentido de que no se pueden predecir, pero no hay que olvidar que todos se calculan utilizando algoritmos muy refinados.
Los algoritmos no son aleatorios, son deterministas y predecibles. Solo aquellos procesos físicos que se salgan completamente de nuestro control (como la intensidad de la radiación cósmica) pueden usarse como fuente de datos aleatorios reales. Los datos producidos por computadoras deterministas no pueden ser aleatorios de ninguna manera.
Un generador de números aleatorios toma un valor llamado semilla, lo trata como un valor de entrada, calcula un número "aleatorio" basado en él (el método depende de un algoritmo elegido) y produce una nueva semilla.
La duración de un ciclo en el que todos los valores semilla son únicos puede ser muy largo, pero no es infinito: tarde o temprano los valores iniciales comenzarán a repetirse y los valores generadores también se repetirán. Esto es normal. Es una característica, no un error.
El valor de la semilla inicial, establecido durante el inicio del programa, determina el orden en que aparecerán los valores generados.
El factor aleatorio del proceso puede ser aumentado al establecer la semilla tomando un número de la hora actual - esto puede garantizar que cada ejecución del programa comience desde un valor semilla diferente (por lo tanto, usará diferentes números aleatorios).
Afortunadamente, Python realiza dicha inicialización al importar el módulo.
La función random
La función general llamada
El programa de ejemplo a continuación producirá cinco valores pseudoaleatorios - ya que sus valores están determinados por el valor semilla actual (bastante impredecible), no puedes adivinarlos:
>>from random import random
>>for i in range(5):
>> print(random())
>>>
0.0526319405023542
0.3923452760242002
0.85131849140358
0.5547143821051266
0.7919790097820241
La función seed
La función
seed() - establece la semilla con la hora actual.seed(int_value) - establece la semilla con el valor enteroint_value .
Hemos modificado el programa anterior; de hecho, hemos eliminado cualquier rastro de aleatoriedad del código:
>>from random import random, seed
>>seed(0)
>>for i in range(5):
>> print(random())
>>>
0.844421851525
0.75795440294
0.420571580831
0.258916750293
0.511274721369
Las funciones randrange y randint
Si deseas valores aleatorios enteros, una de las siguientes funciones encajaría mejor:
randrange(fin) randrange(inicio, fin) randrange(inicio, fin, incremento) randint(izquiera, derecha)
Las primeras tres invocaciones generarán un valor entero tomado (pseudoaleatoriamente) del rango:
range(fin) range(inicio, fin) range(inicio, fin, incremento)
Toma en cuenta la exclusión implícita del lado derecho.
La última función es equivalente a
Observa el código en el editor. Este programa generará una línea que consta de tres ceros y un cero o un uno en el cuarto lugar.
>>from random import randrange, randint
>>print(randrange(1), end=' ')
>>print(randrange(0, 1), end=' ')
>>print(randrange(0, 1, 1), end=' ')
>>print(randint(0, 1))
>>>
0000
Las funciones anteriores tienen una desventaja importante - pueden producir valores repetidos incluso si el número de invocaciones posteriores no es mayor que el rango especificado.
Observa el código en el editor - Es muy probable que el programa genere un conjunto de números en el que algunos elementos no sean únicos:
>>from random import randint
>>for i in range(10):
>> print(randint(1, 10), end=',')
Las funciones choice y sample
Como puedes ver, esta no es una buena herramienta para generar números para la lotería. Afortunadamente, existe una mejor solución que escribir tu propio código para verificar la singularidad de los números "sorteados".
Es una función con el nombre de
choice(secuencia) sample(secuencia, elementos_a_elegir=1)
La primera variante elige un elemento "aleatorio" de la secuencia de entrada y lo devuelve.
El segundo crea una lista (una muestra) que consta del elemento
En otras palabras, la función elige algunos de los elementos de entrada, devolviendo una lista con la elección. Los elementos de la muestra se colocan en orden aleatorio. Nota que
Observa el código a continuación:

No hay comentarios.:
Publicar un comentario