Veremos cómo implementar el Algoritmo de Cuadrados Medios en Python para la generación de números pseudoaleatorios.
Algoritmos para la generación de números pseudo aleatorios
Entre los algoritmos para generar números pseudo aleatorios se cuentan: Algoritmo de cuadrados medios, algoritmos de productos medios, algoritmo de multiplicador constante, algoritmo lineal, algoritmo congruencial multiplicativo, algoritmo congruencial aditivo, algoritmos congruenciales no lineales.
En el presente artículo se analizará e implementará el algoritmo de cuadrados medios en Python .
Algoritmo de cuadrados medios en Python
El algoritmo
Se elige como valor semilla un número de más de 3 dígitos (t=cantidad de dígitos del valor semilla)
Se eleva ese número al cuadrado.
Al valor que resultó, seleccione los t dígitos de en medio (si se requiere, utilice un 0 como primer dígito).
Repetir desde el paso número 2 tomando éste nuevo número.
Implementación en Python
# Algoritmo de cuadrados medios, obtenido en https://naps.com.mx
semilla = input("Escriba semilla: ")
tam1 = len(semilla)
print("Cantidad de dígitos: ", tam1)
numero1 = int(semilla)
for i in range(10):
numero2 = numero1**2
snumero2 = str(numero2)
tam2 = len(snumero2)
primerc = int((tam2 - tam1) / 2)
snumero3 = snumero2[primerc:primerc+tam1]
print ("{}. {}".format(i,snumero3))
numero1 = int(snumero3)
Explicación del programa
Variables
El programa utiliza las siguientes variables:
semilla: Un valor de tipo string que almacenará el valor semilla, es decir un número de 4 o más dígitos para iniciar el algoritmo.
snumero2: el valor semilla elevado al cuadrado, en formato de cadena de caracteres.
snumero3: los n dígitos de en medio, en formato de cadena de caracteres.
numero1: el valor semilla, pero en formato numérico entero.
numero2: el valor semilla elevado al cuadrado en formato numérico entero
tam1: La longitud (o número de dígitos ) del valor semilla
tam2: La longitud (o número de dígitos del valor elevado al cuadrado.
Explicación
tam1 = len(semilla) Extrae la cantidad de dígitos del valor semilla
numero1 = int(semilla) Convierte el valor semilla a formato numérico entero
for i in range(10): Para producir 10 números pseudo aleatorios.
numero2 = numero1**2 eleva el valor semilla al cuadrado
snumero2 = str(numero2) Convierte el valor que está elevado al cuadrado, en cadena de caracteres.
tam2 = len(snumero2) Cuenta la cantidad de dígitos que tiene el valor elevado al cuadrado
primerc = int((tam2 – tam1) / 2) Calcula cuál será el primer carácter a extraer.
snumero3 = snumero2[primerc:primerc+tam1] Extrae n caracteres (según halla sido la cantidad de dígitos que tenía el valor semilla)
numero1 = int(snumero3) Convierte el valor extraído en número para hacer de nuevo el proceso.
Ejecución del programa
Veamos la ejecución de éste programa usando como semilla los valores 7543. Observamos que nos produce 10 números pseudo aleatorios. Si los deseáramos en formato decimal, en el rango de 0 a 1, solo se necesitaría incluir el punto decimal al inicio de la cifra.
En éste artículo vimos una forma de generar números pseudo aleatorios en Python. Los números pseudo aleatorios son una parte importante en la elaboración de modelos de simulación.