Este documento tiene como propósito realizar una validación del GNP usando generación de números pseudoaleatorios mediante el método congruencial lineal mixto en R.
El método se define como:
\[ X_{n+1} = (aX_n + c) \mod m \]
Donde:
- \(a\) es el multiplicador
- \(c\) es la constante aditiva
- \(m\) es el módulo
- \(X_0\) es la semilla
# Parámetros del método
a <- 5 # multiplicador
c <- 3 # constante aditiva
m <- 16 # módulo
x0 <- 7 # semilla
# Cantidad de números a generar
n <- 20
# Inicializar vector
x <- numeric(n)
x[1] <- x0
# Generación
for (i in 2:n) {
x[i] <- (a * x[i-1] + c) %% m
}
# Normalizar en [0,1]
u <- x / m
# Mostrar resultados
data.frame(iteracion = 1:n, valor = x, uniforme = u)
## iteracion valor uniforme
## 1 1 7 0.4375
## 2 2 6 0.3750
## 3 3 1 0.0625
## 4 4 8 0.5000
## 5 5 11 0.6875
## 6 6 10 0.6250
## 7 7 5 0.3125
## 8 8 12 0.7500
## 9 9 15 0.9375
## 10 10 14 0.8750
## 11 11 9 0.5625
## 12 12 0 0.0000
## 13 13 3 0.1875
## 14 14 2 0.1250
## 15 15 13 0.8125
## 16 16 4 0.2500
## 17 17 7 0.4375
## 18 18 6 0.3750
## 19 19 1 0.0625
## 20 20 8 0.5000
hist(u, breaks = 5, main = "Distribución de números pseudoaleatorios", col = "lightblue")
Aquí se insertan las conclusiones sobre la validación del GNP a partir de la simulación realizada.