Está en la página 1de 18

Instituto Tecnológico de Estudios Superiores de

Los Cabos

Ing. en Sistemas Computacionales.

“Practica 3 Pruebas estadísticas a números pseudoaleatorios”

Asignatura: Simulación.
Docente: José Ismael Ojeda Campaña.
Grupo: ISC-05V

Estudiante(s): Patrick Zaid Castro Gatica

Número de control: 21380032

Los Cabos, B.C.S., 12/12/2023


• Media
En simulación, a menudo se utilizan números aleatorios para modelar la aleatoriedad en
el comportamiento de un sistema. La "media" en este contexto puede referirse a los
parámetros de una distribución aleatoria, como la media de una distribución normal que
se utiliza para generar números aleatorios.
• Varianza
La varianza es una medida de dispersión que indica qué tan dispersos están los valores
de un conjunto de datos con respecto a su media aritmética. Cuanto mayor sea la
varianza, mayor será la dispersión de los datos.
• Chi cuadrada
La prueba de chi cuadrada se utiliza para evaluar si hay una diferencia significativa entre
la distribución observada de datos y la distribución esperada. Se aplica comúnmente en
el contexto de tablas de contingencia y frecuencias observadas frente a frecuencias
esperadas.
• Corridas arriba y debajo de la media
En estadísticas, las corridas se refieren a secuencias consecutivas de observaciones que
comparten la misma característica (por ejemplo, estar por encima o por debajo de la
media). La prueba de corridas evalúa si la secuencia de valores es aleatoria o muestra
algún patrón.
• Longitud de corridas
La longitud de corridas se refiere al número de observaciones consecutivas que
comparten la misma característica en una secuencia. Las pruebas de longitud de corridas
pueden utilizarse para evaluar la aleatoriedad de una serie de datos.
• Prueba de huecos
Esta prueba se utiliza para evaluar la presencia de "huecos" en una secuencia de datos.
Un hueco es una ausencia de ciertos eventos en la secuencia, y esta prueba ayuda a
determinar si la distribución de eventos es aleatoria.
• Prueba de póquer
La prueba de póquer se utiliza para evaluar la aleatoriedad en secuencias de números,
como en el caso de generadores de números pseudoaleatorios. La idea es clasificar las
secuencias en categorías de póquer (por ejemplo, "par", "trío", "cuarteto") y luego evaluar
si la distribución de estas categorías es consistente con la aleatoriedad.

Objetivo
El objetivo es poder generar números pseudoaleatorios a través de una lógica de programación
que pueda generar dichos números con el fin de poder ver y entender como puede variar dichos
números que no dan un valor exacto.
1.
Para crear las estadísticas de nuestro generador, emplearemos una clase denominada
"AnalizadorDatos". Esta clase se encargará de realizar el análisis estadístico de los datos
generados, evaluando propiedades como la dispersión, la aleatoriedad y otras métricas
relevantes.
Media

Iniciamos estableciendo la variable "total" en 0.0. A continuación, recorremos cada elemento


"número" en la lista de números. En cada iteración, sumamos el valor del número actual a la
variable "total". Finalmente, obtenemos la media dividiendo la suma total por la cantidad de
elementos en la lista de números. Esta función estática realiza el cálculo estándar de la media
para una lista de números dada.

Varianza
Este método determina la media de las diferencias al cuadrado entre cada número y la media
aritmética. Comienza inicializando la variable "sumaDiferenciasCuadradas" en 0.0. Luego, para
cada número "num" en la lista de números, se calcula la diferencia entre "num" y la media. Se
eleva al cuadrado dicha diferencia y se suma al valor acumulado de
"sumaDiferenciasCuadradas". Finalmente, se obtiene la media de estas diferencias cuadradas
dividiendo la suma total entre el número de elementos en la lista de números. Este método
proporciona una medida de dispersión al evaluar la variabilidad de los números respecto a la
media.

Chi cuadrada

Definimos intervalos de 0.2 a 0.4, 0.4 a 0.6, y así sucesivamente, para dividir los datos.
Inicializamos un contador para las frecuencias observadas en cada intervalo. Asignamos las
frecuencias observadas para cada número en la lista, identificando el intervalo correspondiente.
Calculamos las frecuencias esperadas asumiendo una distribución uniforme, dividiendo el
tamaño de la muestra por el número de intervalos. Calculamos el estadístico de prueba de la chi
cuadrada sumando las diferencias al cuadrado entre frecuencias observadas y esperadas,
dividido por las esperadas. La fórmula para el estadístico de prueba de chi cuadrada es la suma
de las diferencias al cuadrado entre frecuencias observadas y esperadas, dividida por las
esperadas. Este proceso evalúa si las frecuencias en los intervalos difieren significativamente de
las esperadas en una distribución uniforme.

Iniciamos un bucle for que recorre los intervalos. Para cada intervalo \( i \):

- Aumentamos la variable \( \chi^2 \) en la diferencia al cuadrado entre la frecuencia


observada y la frecuencia esperada, dividida por la frecuencia esperada.

- Sumamos el resultado de esta expresión a la variable \( \chi^2 \).

Finalmente, la función devuelve el valor del estadístico de prueba de la chi cuadrada, que
es la suma acumulativa de las diferencias al cuadrado entre frecuencias observadas y
esperadas, dividida por las esperadas. Este proceso evalúa la discrepancia global entre
las frecuencias observadas y esperadas en los intervalos.

Corridas arriba y debajo de la media


Generamos una lista llamada "resultado" para almacenar valores binarios (0 o 1) que indican si
un número es mayor o igual que el anterior. Recorremos la lista de números mediante un bucle,
y para cada número en la secuencia:

- Si el número actual es mayor que el anterior, añadimos 1 a la lista "resultado".

- Si el número actual es menor o igual al anterior, agregamos 0 a la lista "resultado".

Establecemos dos variables, "huecos" y "longitudActual", para almacenar el número de huecos


y la longitud actual de una secuencia de números iguales. Iteramos a través de la lista "resultado"
y actualizamos las variables "huecos" y "longitudActual" siguiendo estos criterios:

- Si el valor actual de "resultado" es 0, entonces incrementamos "longitudActual" en 1.

- Si el valor actual de "resultado" es 1 y "longitudActual" es mayor que 0, entonces incrementamos


"huecos" en 1 y establecemos "longitudActual" en 0.
Longitud de corridas

Generamos una lista llamada "resultado" para almacenar valores binarios (0 o 1), indicando si un
número es mayor o igual que el anterior. Iteramos a través de la lista "numeros" mediante un
bucle y, para cada número en la secuencia:

- Agregamos 1 a la lista "resultado" si el número actual es mayor que el anterior.

- Añadimos 0 a la lista "resultado" si el número actual es menor o igual al anterior.

Establecemos dos variables, "longitudActual" y "longitudMaxima", para almacenar la longitud


actual y máxima de una secuencia de números iguales, respectivamente. Iteramos a través de
la lista "resultado" y actualizamos las variables "longitudActual" y "longitudMaxima" según los
siguientes criterios:
Si el valor actual de "resultado" es igual al valor anterior, incrementamos "longitudActual" en 1.

Si el valor actual de "resultado" es diferente al valor anterior, establecemos "longitudActual" en


0.

Si "longitudActual" es mayor que "longitudMaxima", establecemos "longitudMaxima" en


"longitudActual".

Finalmente, la función devuelve el valor de la longitud máxima de una secuencia de números


iguales.

Prueba de huecos
Generamos una lista llamada "resultado" para almacenar valores binarios (0 o 1), indicando si un
número está en el rango [0.6, 0.7]. Iteramos a través de la lista "números" mediante un bucle y,
para cada número en la secuencia:
Agregamos 1 a la lista "resultado" si el número actual está en el rango [0.6, 0.7].
Añadimos 0 a la lista "resultado" si el número actual no está en el rango [0.6, 0.7].
Luego, creamos una lista llamada "longitudesHuecos" para almacenar las longitudes de las
secuencias de números iguales en "resultado". Iteramos a través de "resultado" y actualizamos
"longitudesHuecos" según los siguientes criterios:
Si el valor actual de "resultado" es igual al valor anterior, incrementamos la variable "longitud" en
1.
Si el valor actual de "resultado" es diferente al valor anterior, establecemos "longitud" en 0.
Si "longitud" es mayor que 0, añadimos "longitud" a "longitudesHuecos".

El código primero recorre la lista resultado y cuenta el número de ceros consecutivos. Si el valor
actual de resultado es 0, entonces longitud se incrementa en 1. Si el valor actual de resultado es
1, entonces longitud se establece en 0.
Después de que el bucle haya terminado, el código calcula los valores esperados de los huecos.

El cálculo de los valores esperados se realiza asumiendo que los huecos son eventos
independientes. En este contexto, la probabilidad de un hueco de longitud 0 es 0.1, y la
probabilidad de un hueco de longitud \( n \) es \( 0.9 \) multiplicado por la probabilidad del hueco
anterior de longitud \( n-1 \). Este proceso se repite para distintas longitudes de huecos.

Finalmente, el código calcula la estadística de prueba de chi-cuadrado. Este valor se obtiene al


comparar las frecuencias observadas con las esperadas para los distintos intervalos, evaluando
la discrepancia global. En resumen, el análisis busca determinar si la distribución de huecos sigue
la expectativa teórica asumiendo independencia.
Prueba de póquer.

Establecemos las siguientes listas para clasificar


diferentes patrones en una secuencia de números:
TD (Tres Diferentes): Almacena el número de números que no forman ningún patrón.
PAR (Par): Almacena el número de números que forman un par
DPAR (Dos Pares): Guarda el número de números que forman dos pares.
TERCIA (Tercia): Almacena el número de números que forman una tercia.
PK (Póker): Registra el número de números que forman un póker.
Si la variable `tieneQuintilla` es verdadera, se añade un 1 a la lista `QINT`. Si `tienePoker` es
verdadera, se agrega un 1 a la lista `PK`. En caso de que `tieneTercia` sea verdadera, se suma
1 a la lista `TERCIA`. Si `tieneDPar` también es verdadera, se incluye un 1 en la lista `DPAR`.
De lo contrario, se incrementa la lista `PAR` con un 1.
El método calcula los valores esperados de las listas TD, PAR, DPAR, TERCIA y PK.

Se calcula la frecuencia esperada.


En este parte del método se realiza los calculos para la chiCuadrada
La prueba \( \text{PruebaPK} \) se calcula como la suma de varias contribuciones, donde cada
contribución (\( Ctd, Cpar, Cdpar, Cter, Cpk \)) mide la discrepancia entre los valores observados
y esperados de diferentes patrones. La fórmula es la siguiente:\[ \text{PruebaPK} = Ctd + Cpar +
Cdpar + Cter + Cpk \]
Donde:
- \( Ctd \) es la suma de las diferencias al cuadrado entre los valores observados y esperados de
la lista TD, dividida por el valor esperado de la lista TD- \( Cpar \) es la suma de las diferencias
al cuadrado entre los valores observados y esperados de la lista PAR, dividida por el valor
esperado de la lista PAR- \( Cdpar \) es la suma de las diferencias al cuadrado entre los valores
observados y esperados de la lista DPAR, dividida por el valor esperado de la lista DPAR. - \(
Cter \) es la suma de las diferencias al cuadrado entre los valores observados y esperados de la
lista TERCIA, dividida por el valor esperado de la lista TERCIA \( Cpk \) es la suma de las
diferencias al cuadrado entre los valores observados y esperados de la lista PK, dividida por el
valor esperado de la lista PK.
Finalmente, crearemos un método que mostrará los resultados de los datos en una ventana
emergente. En este método, concatenaremos los resultados obtenidos de cada uno de los
métodos previamente ejecutados. La información se presentará de manera clara y comprensible
para el usuario, proporcionando una visión general de los patrones y estadísticas derivados del
análisis de los datos.
Finalmente, crearemos un método que mostrará los resultados de los datos en una ventana
emergente. En este método, concatenaremos los resultados obtenidos de cada uno de los
métodos previamente ejecutados sobre la ObservableList proporcionada. La información se
presentará de manera clara y comprensible para el usuario, ofreciendo una visión general de los
patrones y estadísticas derivados del análisis de los datos pseudoaleatorios.

Conclusión

En resumen, hemos explorado una serie de procesos y métodos relacionados con el análisis de
datos pseudoaleatorios. Desde la generación de números hasta pruebas estadísticas y
evaluación de patrones, cada paso ha sido diseñado para proporcionar una comprensión más
profunda de la naturaleza y distribución de los números generados.

Bibliografía.

Educativo, P. (s/f-b). Universidad Autónoma del Estado de Hidalgo. Edu.mx.

Recuperado el 12 de diciembre de 2023, de

https://repository.uaeh.edu.mx/bitstream/bitstream/handle/123456789/20363

/numeros-pseudo-aleatorios.pdf?sequence=1
Generar números aleatorios fuertes en Java. (s/f). Juntadeandalucia.es. Recuperado el

12 de diciembre de 2023, de

https://www.juntadeandalucia.es/servicios/madeja/contenido/recurso/607

También podría gustarte