Números
pseudoaletarios vs números genuinamente aleatorios
Un número pseudo aleatorio es un número que cumple las
funciones de un número aleatorio pero es generado a través de un algoritmo
matemático. Si conocemos el algoritmo que se utilizó para generar una secuencia
de números pseudo aleatorios, así como algunos valores iniciales, se puede
predecir toda la secuencia de números que se van a generar. Por el
contrario, es imposible predecir el valor siguiente de una secuencia de números
genuinamente aleatorios. (Turquía, 2013).
Algoritmos
para la generación de números pseudo aleatorios
Existen varios algoritmos, entre los que se cuentan:
Algoritmo de cuadrados medios, algoritmos de productos medios, algoritmo de
multiplicador constante, algoritmo lineal, algoritmo congruencia
multiplicativo, algoritmo congruencia aditivo, algoritmos congruencia les no
lineales.
En el presente artículo se analizará el algoritmo de
cuadrados medios y se implementará en el lenguaje de programación Java.
Algoritmo
de cuadrados medios
1.
Se elige como valor semilla un número de más de
3 dígitos (t=cantidad de dígitos del valor semilla)
2.
Se eleva ese número al cuadrado.
3.
Al valor que resultó, seleccione los t dígitos
de en medio (si se requiere, utilice un 0 como primer dígito).
4.
Repetir desde el paso número 2 tomando éste
nuevo número.
Implementación
Java
Explicación
del programa Variables
El programa utiliza las siguientes variables:
·
Entrada: Para poder leer datos de el teclado
·
Semilla: Un valor de tipo cadena de caracteres
que almacenará el valor semilla, es decir un número de más de 4 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 = semilla.length(); Extrae la cantidad de dígitos
del valor semilla
·
numero1 = Integer.parseInt(semilla); Convierte el valor semilla a formato numérico
entero
·
for (i=1; i<=10; i++){ Para producir 10 números pseudo aleatorios.
·
numero2 = (long)Math.pow(numero1,2); eleva el valor semilla al cuadrado
·
snumero2 = Long.toString(numero2); Convierte el valor
que está elevado al cuadrado, en cadena de caracteres.
·
tam2 = snumero2.length(); Cuenta la cantidad de
dígitos que tiene el valor elevado al cuadrado
·
primerc = (tam2-tam1) / 2; Calcula cuál será el primer carácter a
extraer.
·
snumero3 = snumero2.substring(primerc,primerc+tam1);
Extrae n caracteres (según halla sido la cantidad de dígitos que tenía el valor
semilla)
·
numero1 = Integer.parseInt(snumero3); Convierte el
valor extraído en número para hacer de nuevo el proceso.

No hay comentarios.:
Publicar un comentario