Está en la página 1de 9

SECRETARÍA DE MARINA

OFICIALÍA MAYOR
UNIVERSIDAD NAVAL
CENTRO DE ESTUDIOS SUPERIORES NAVALES
DIRECCIÓN DE LA ESCUELA DE ÁREAS TECNOLÓGICAS, HUMANIDADES, IDIOMAS
E INTELIGENCIA
SUBDIRECCIÓN DE POSGRADOS TECNOLÓGICOS

I. ÍNDICE

I. ÍNDICE. -------------------------------------------------------------------------------------------------- 2

II. INTRODUCCIÓN. ---------------------------------------------------------------------------------------- 3

III. DESARROLLO. --------------------------------------------------------------------------------------------4

A. LOS NÚMEROS ALEATORIOS. ---------------------------------------------------------------------4

B. COMO SE GENERAN LOS NÚMEROS ALEATORIOS. -----------------------------------------4

C. PARA QUE SIRVEN LOS NÚMEROS ALEATORIOS. -------------------------------------------7

D. EJEMPLO. “JUEGO ADIVINA ADIVINADOR EN QUE NUMERO ESTOY PENSANDO” -8

IV. CONCLUSIÓN. ------------------------------------------------------------------------------------------- 9

V. REFERENCIAS BIBLIOGRÁFICAS. --------------------------------------------------------------------10

2
SECRETARÍA DE MARINA
OFICIALÍA MAYOR
UNIVERSIDAD NAVAL
CENTRO DE ESTUDIOS SUPERIORES NAVALES
DIRECCIÓN DE LA ESCUELA DE ÁREAS TECNOLÓGICAS, HUMANIDADES, IDIOMAS
E INTELIGENCIA
SUBDIRECCIÓN DE POSGRADOS TECNOLÓGICOS

II. INTRODUCCIÓN

Los números aleatorios son números que se obtienen del azar, estos no dependen de otro
número, supongamos la suma 4 + 2 = 6, donde el numero 6 es producto de una suma, en el
caso de los números aleatorios no lo es así.

El azar hace referencia a hechos cuyas causas no siguen pautas definidas, un ejemplo de
números al azar es la lotería nacional en la cual hay distintas urnas con cierta cantidad de
números, de estas urnas se elige un número completamente al azar por medio de un
mecanismo mecánico, al final por cada urna obtenemos un numero al azar y el cual en conjunto
con las demás urnas nos da el numero ganador.

Los números aleatorios se pueden obtener principalmente de dos maneras, de manera manual
como se ejemplifico en el párrafo anterior o de manera digital a través de un ordenador y un
algoritmo. (Westreicher, 2021)

A continuación, se describirá brevemente en términos de informática que son los números


aleatorios, como se generan y sus principales usos.

3
SECRETARÍA DE MARINA
OFICIALÍA MAYOR
UNIVERSIDAD NAVAL
CENTRO DE ESTUDIOS SUPERIORES NAVALES
DIRECCIÓN DE LA ESCUELA DE ÁREAS TECNOLÓGICAS, HUMANIDADES, IDIOMAS
E INTELIGENCIA
SUBDIRECCIÓN DE POSGRADOS TECNOLÓGICOS

III. DESARROLLO.

A. LOS NÚMEROS ALEATORIOS.

Los números aleatorios son aquellos que se obtienen completamente al azar por lo cual
no se pueden predecir y estos no están ligados a algún patrón o secuencia, los números
pseudoaleatorios son generados por un algoritmo, es decir, a partir de un valor inicial, y su
valor parece ser aleatorio, pero es en realidad predecible. Estos números son generados
por computadoras para imitar la aleatoriedad su principal uso es en aplicaciones donde la
aleatoriedad no es crítica. (Varela, 2018)

Como punto de partida y para el desarrollo del tema abordaremos el concepto de


números pseudoaleatorios, los cuales se obtienen por algoritmos y son empleados en
ambientes de programación como lo es Python.

B. ¿COMO SE GENERAN LOS NÚMEROS ALEATORIOS?

Como ya se menciono en términos de informática los números pseudoaleatorios se


generan por medio de un algoritmo o dicho de otra se especifica en que manera se van a
generar dichos números a través de un modelo matemático. “Las secuencias generadas
de una manera determinista a menudo se denominan secuencias pseudoaleatorias o
cuasialeatorias en la literatura técnica intelectual”. (Knuth, 1997, pág. 2)

Los números aleatorios generados de manera determinista por computadoras funciona


bastante bien en casi todas las aplicaciones, siempre que se haya seleccionado
cuidadosamente un método adecuado. El método más común es el algoritmo de
congruencia lineal el cual se basa en la generación de una secuencia de números
aparentemente aleatorios a partir de un valor inicial. Dentro de este método lineal
tenemos el Congruecial Mixto y el Congruecial Multiplicativo.

4
SECRETARÍA DE MARINA
OFICIALÍA MAYOR
UNIVERSIDAD NAVAL
CENTRO DE ESTUDIOS SUPERIORES NAVALES
DIRECCIÓN DE LA ESCUELA DE ÁREAS TECNOLÓGICAS, HUMANIDADES, IDIOMAS
E INTELIGENCIA
SUBDIRECCIÓN DE POSGRADOS TECNOLÓGICOS

“Las sucesiones lineales congruentes no son las únicas fuentes de números aleatorios que
se han propuesto para uso informático”. (Knuth, 1997, pág. 26)

Por otra parte, se tiene métodos no lineales como:

Método de la transformada inversa: “utiliza la distribución acumulada F(x) de la


distribución que se va a simular. Puesto que F(x) está definida en intervalo (0;1), se puede
generar un número aleatorio uniforme R y tratar de determinar el valor de la variable
aleatoria para la cual su distribución acumulada es igual a R, es decir, el valor simulado de
la variable aleatoria que sigue una distribución de probabilidad f(x)”. (Bu, 2003, pág. 49)

Método de Rechazo: “Este método consiste primeramente en generar un valor de la


variable aleatoria y en seguida probar que dicho valor simulado proviene de la distribución
de probabilidad que se está analizando”. (Bu, 2003, pág. 54)

Método de Composición: En este método la distribución de probabilidad f(x) se expresa


como una mezcla de varias distribuciones de probabilidad f(x) seleccionadas
adecuadamente. (Bu, 2003, pág. 56)

Recientemente se está experimentando con los Métodos de los números aleatorios


cuánticos: estos se basan en la generación de números aleatorios a partir de eventos
cuánticos, como la medición de la polarización de un fotón.

En programación, Python implementa generadores de números pseudoaleatorios para


varias distribuciones.

“Para los enteros, existe una selección uniforme dentro de un rango. Para las secuencias,
existe una selección uniforme de un elemento aleatorio, una función para generar una
permutación aleatoria de una lista in-situ y una función para el muestreo aleatorio sin
reemplazo”. (La biblioteca estándar de Python, 2023).

5
SECRETARÍA DE MARINA
OFICIALÍA MAYOR
UNIVERSIDAD NAVAL
CENTRO DE ESTUDIOS SUPERIORES NAVALES
DIRECCIÓN DE LA ESCUELA DE ÁREAS TECNOLÓGICAS, HUMANIDADES, IDIOMAS
E INTELIGENCIA
SUBDIRECCIÓN DE POSGRADOS TECNOLÓGICOS

“Para números reales, existen funciones para calcular distribuciones uniformes, normales
(Gaussianas), log-normales, exponenciales negativas, gamma y beta. Para generar
distribuciones angulares está disponible la distribución de von Mises”. (La biblioteca
estándar de Python, 2023)

A continuación, se describen algunas funciones que implementan números


pseudoaleatorios en programación Python.

Funciones de contabilidad.
random.seed(a=None, version=2), Es una función del módulo "random" que se utiliza para
establecer la semilla inicial para la generación de números aleatorios. Se introduce un
valor inicial el cual se utiliza como punto de partida para generar una secuencia de
números aleatorios. Se toma como argumento "a", que es el valor inicial. Si no se
proporciona un argumento, se utiliza un valor aleatorio basado en la hora actual del
sistema. Existe dos versiones, versión = 1 y versión = 2, comúnmente se utiliza más la versión
2.

Funciones para los bytes.


random.randbytes(n), es una función que devuelve n bytes aleatorios generados de forma
segura. Los bytes se representan como una secuencia inmutable de números enteros en
el rango de 0 a 255. Esta funcion devuelve una cadena de bytes aleatorios de longitud n,
la cual es útil en aplicaciones de seguridad y criptografía, donde se requiere generar datos
aleatorios criptográficamente seguros.

Funciones para enteros


random.randrange(start, stop[, step]), es una función que devuelve un número entero
aleatorio entre start (incluido) y stop (excluido), con un paso opcional especificado por el
parámetro step.
Si step no se especifica, se asume un valor predeterminado de 1. Esta función devuelve un
número entero aleatorio en lugar de una secuencia de números enteros, es útil en

6
SECRETARÍA DE MARINA
OFICIALÍA MAYOR
UNIVERSIDAD NAVAL
CENTRO DE ESTUDIOS SUPERIORES NAVALES
DIRECCIÓN DE LA ESCUELA DE ÁREAS TECNOLÓGICAS, HUMANIDADES, IDIOMAS
E INTELIGENCIA
SUBDIRECCIÓN DE POSGRADOS TECNOLÓGICOS

aplicaciones que requieren un número aleatorio dentro de un rango específico, como


juegos, simulaciones y pruebas.

Otra función para enteros es, random.randint(a, b), misma que devuelve un número
entero aleatorio en el rango inclusivo de “a” a “b”. Es decir, el resultado puede ser igual a
“a, b” o cualquier número entero entre ellos. Un ejemplo de ello es si deseas generar un
número entero aleatorio entre 1 y 100, puedes usar random.randint(1, 100) y la función
devolverá un número entero aleatorio en ese rango. En este mismo documento se incluye
el código del juego “juego adivina adivinador en que numero estoy pensando”, donde se
emplea esta función.

Funciones para secuencias


random.choice(seq), es una función la cual devuelve un elemento aleatorio de una
secuencia “seq”. La secuencia puede ser una lista, tupla, conjunto, cadena de texto u otro
tipo de secuencia.

C. ¿PARA QUE SIRVEN LOS NÚMEROS ALEATORIOS?

Los números aleatorios se emplean para diferentes aplicaciones como lo son:


Simulaciones, Muestreo, Análisis Numéricos, Programación de Computadoras, Toma de
decisiones, Estética, Recreación, entro otros usos.

Simulación: como ejemplo se emplean números aleatorios para simular fenómenos


naturales, con el uso de números aleatorios se pueden hacer representaciones realistas, la
simulación cubre muchos campos en el ámbito científico y tecnológico.

Muestreo: en ocasiones analizar o examinar algún problema en su totalidad demanda


mayor uso de recursos y capacidades hablando del hardware de computadoras, por lo cual
tomar muestras en distintos puntos nos puede proporcionar una idea y acercarnos al valor
real, aquí es donde los números aleatorios entran en acción, tomando el lugar de esas
muestras discretas en el tiempo.

7
SECRETARÍA DE MARINA
OFICIALÍA MAYOR
UNIVERSIDAD NAVAL
CENTRO DE ESTUDIOS SUPERIORES NAVALES
DIRECCIÓN DE LA ESCUELA DE ÁREAS TECNOLÓGICAS, HUMANIDADES, IDIOMAS
E INTELIGENCIA
SUBDIRECCIÓN DE POSGRADOS TECNOLÓGICOS

Análisis numéricos: “Se han ideado técnicas ingeniosas para resolver problemas
numéricos complicados utilizando números aleatorios”. (Knuth, 1997, pág. 1)

Programación de Computadoras: los números aleatorios son una magnifica entrada de


datos para probar la eficiencia de algoritmos informáticos, y por ende son cruciales para
algoritmos que usan números aleatorios.

Toma de decisiones: la aleatoriedad de los números en ocasiones juega un papel crucial


en tomas de decisiones, sobre todo en decisiones de carácter insensible.

Estética: los números aleatorios son empleados también para la generación de escenarios
gráficos y ambientes musicales generados por computadora.

Recreación: los números aleatorios se emplean para generar aleatoriedad en juegos por
computadora, como lo son baraja, tiro al blanco parchís entre otros. “Estos usos
tradicionales de los números aleatorios han sugerido con el nombre de método de Monte
Carlo, un término general utilizado para describir cualquier algoritmo que emplee
números aleatorios”. (Knuth, 1997, pág. 2)

D. EJEMPLO. “JUEGO ADIVINA ADIVINADOR EN QUE NUMERO ESTOY PENSANDO”

En este juego, el programa genera un número aleatorio entre 1 y 10, el jugador tiene que
adivinar el número en un máximo de 5 intentos. En cada intento, el usuario introduce un
número y el programa verifica si es igual, mayor o menor al número ha adivinar. Si el
usuario adivina el número, el programa muestra un mensaje de felicitaciones y si no,
muestra un mensaje indicando el número secreto generado. En ambos casos, el juego
termina.

8
SECRETARÍA DE MARINA
OFICIALÍA MAYOR
UNIVERSIDAD NAVAL
CENTRO DE ESTUDIOS SUPERIORES NAVALES
DIRECCIÓN DE LA ESCUELA DE ÁREAS TECNOLÓGICAS, HUMANIDADES, IDIOMAS
E INTELIGENCIA
SUBDIRECCIÓN DE POSGRADOS TECNOLÓGICOS

CÓDIGO
import random

print("JUEGO ADIVINA ADIVINADOR DIME EN QUE NUMERO ESTOY PENSADO")


print("Tendrás que adivinar un número entre 1 y 10 en un máximo de 5 intentos")
numero_secreto = random.randint(1, 10)
intentos = 0

while intentos < 5:


intentos += 1
print("Intento", intentos)
numero = int(input("Introduce un número: "))

if numero == numero_secreto:
print("¡Felicidades! Adivinaste el número en {} intentos".format(intentos))
break
elif numero < numero_secreto:
print("El número es más grande")
else:
print("El número es más pequeño")

if intentos == 5:
print("Lo siento, no adivinaste el número en el máximo de intentos permitidos")
print("El número secreto era", numero_secreto)

IV. CONCLUSIÓN

Los números aleatorios son de vital importancia en la ciencia y la tecnología, ya que se utilizan
en una gran variedad de aplicaciones de la vida diaria, como simulaciones (meteorología),
criptografía (aplicaciones bancarias), juegos (juegos de apuestas por internet), modelado de
sistemas (uso de software dedicado “Matlab”), entre otros. Se enunciaron diferentes métodos
matemáticos para la generación de números aleatorios tanto lineales con no lineales. Es
importante seleccionar el método adecuado para cada aplicación y su uso, así como tener en
cuenta que los números aleatorios no pueden predecirse completamente, pero pueden tener
patrones. Podemos concluir que la generación de números aleatorios es un tema complejo y
es importante comprender los métodos utilizados para poder emplearlos de manera adecuada.

9
SECRETARÍA DE MARINA
OFICIALÍA MAYOR
UNIVERSIDAD NAVAL
CENTRO DE ESTUDIOS SUPERIORES NAVALES
DIRECCIÓN DE LA ESCUELA DE ÁREAS TECNOLÓGICAS, HUMANIDADES, IDIOMAS
E INTELIGENCIA
SUBDIRECCIÓN DE POSGRADOS TECNOLÓGICOS

V. BIBLIOGRAFÍA

Bu, R. C. (2003). Simulacion un enfoque practico. Mexico DF.: Limusa.

Knuth, D. E. (1997). THE ART OF COMPUTER PROGRAMMING. Stanford University: Addison


Wesley.

La biblioteca estándar de Python, M. n. (18 de abril de 2023). Python. Obtenido de 3.11.3


Documentation » La biblioteca estándar de Python » Módulos numéricos y
matemáticos »: https://docs.python.org/es/3/library/random.html

Varela, D. D. (2018). Grupo de Invstigación en Sistemas Inteligentes. Obtenido de


http://virtual.cuautitlan.unam.mx/intar/?page_id=379#:~:text=Un%20n%C3%BAmero%2
0aleatorio%20es%20aquel,de%20la%20elecci%C3%B3n%20del%20otro.

Westreicher, G. (1 de febrero de 2021). economipedia. Obtenido de


https://economipedia.com/definiciones/numeros-aleatorios.html

10

También podría gustarte