Generando de los Números Aleatorios

set.seed(1108)
num_aleat <- runif(100)

1. Prueba ChI2

hist(num_aleat, breaks=6)

library(agricolae)
histo <- hist(num_aleat, breaks=6)

Tabla <- table.freq(histo) 
 lim_inf <-Tabla$Lower
 lim_sup <- Tabla$Upper
 
 obser <- Tabla$Frequency
 Ei <- length(num_aleat)/length(obser)
 cbind(lim_inf,lim_sup,obser,Ei)
##      lim_inf lim_sup obser Ei
## [1,]     0.0     0.2    11 20
## [2,]     0.2     0.4    16 20
## [3,]     0.4     0.6    24 20
## [4,]     0.6     0.8    30 20
## [5,]     0.8     1.0    19 20
x2 <- (obser-Ei)^2/Ei 
 x2
## [1] 4.05 0.80 0.80 5.00 0.05
chicuad <- sum(x2)
 chicuad
## [1] 10.7
dchi <- qchisq(0.05,length(obser)-1,lower.tail=F)
ifelse(chicuad < dchi,"Los $U_i$ provienen de una distribución uniforme [0,1]", "Los $U_i no siguen una uniforme [0,1] ")
## [1] "Los $U_i no siguen una uniforme [0,1] "

2. Prueba de Kolmogorov-Smirnov

test_ks <- ks.test(num_aleat,"punif",0,1)
test_ks
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  num_aleat
## D = 0.15459, p-value = 0.0168
## alternative hypothesis: two-sided
 test_ks$p.value
## [1] 0.01679633
ifelse(test_ks$p.value < 0.05, " Los u_i no siguen una distribución uniforme","Los u_i siguen la distribución uniforme [0,1]")
## [1] " Los u_i no siguen una distribución uniforme"

3. Prueba de Corrida

diff(num_aleat)
##  [1] -0.296022594  0.323322006 -0.051292908  0.026436191 -0.471806538
##  [6]  0.716038840 -0.320271107  0.303051497 -0.191794201 -0.238792034
## [11] -0.443761185  0.482481691 -0.226033298  0.646209610 -0.078217113
## [16] -0.084661939 -0.761923028  0.008023647  0.665641375 -0.106456756
## [21] -0.210542301 -0.191679491  0.395369401 -0.119953075  0.427886152
## [26] -0.179393654 -0.540003335  0.171489982  0.380720654 -0.154099335
## [31] -0.204598176 -0.017548546  0.026808657  0.064292964  0.336184422
## [36] -0.126744113 -0.054966354 -0.154005064 -0.236395898 -0.005361969
## [41] -0.106751518  0.672298369 -0.688295183  0.343117071  0.145897465
## [46]  0.038099046 -0.559066521  0.785039295 -0.418383857 -0.131686146
## [51]  0.155869941  0.308633935 -0.041551510 -0.575722417  0.760250683
## [56]  0.025809376 -0.289090188 -0.174132716  0.209044795 -0.285866635
## [61]  0.258109941 -0.066059827 -0.493051479  0.655533786  0.146066058
## [66] -0.572666624  0.564829031 -0.483445588  0.428300050 -0.351374588
## [71]  0.076437065 -0.433733908  0.428000062 -0.336967660 -0.127709130
## [76]  0.455827523 -0.126252871 -0.172473820 -0.094390574  0.812407542
## [81] -0.103593234 -0.378460634  0.015157660  0.189609858  0.039746463
## [86] -0.046310626 -0.150363620  0.411759289 -0.214451669 -0.356825642
## [91]  0.383276078 -0.398152333  0.268992622  0.258310341 -0.165189294
## [96] -0.500464816  0.060039325  0.161682322  0.348337256
S<-ifelse(diff(num_aleat) > 0, 1, 0)
S
##  [1] 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0
## [39] 0 0 0 1 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1
## [77] 0 0 0 1 0 0 1 1 1 0 0 1 0 0 1 0 1 1 0 0 1 1 1
cambios <- abs(diff(S))

corridas <- sum(cambios) + 1
corridas
## [1] 60
mu = (2*length(num_aleat)-1)/3
mu
## [1] 66.33333
varianza <- (16*length(num_aleat)-29)/90
 
Z <- (corridas-mu)/sqrt(varianza)
Z
## [1] -1.515882
ifelse(Z<1.96,"Los u_i son independientes","Los u_i son dependeientes")
## [1] "Los u_i son independientes"

- Usando de la librería DescTolls y la función Runstest

library(DescTools)
RunsTest(S)
## 
##  Runs Test for Randomness
## 
## data:  S
## z = 1.9664, runs = 60, m = 55, n = 44, p-value = 0.04926
## alternative hypothesis: true number of runs is not equal the expected number

4. Prueba Poker

library(randtoolbox)
## Cargando paquete requerido: rngWELL
## This is randtoolbox. For an overview, type 'help("randtoolbox")'.
poker.test(num_aleat,nbcard=5)
## 
##           Poker test
## 
## chisq stat = 0.57, df = 4, p-value = 0.97
## 
##       (sample size : 100)
## 
##  observed number  0 1 10 8 1 
##  expected number  0.032 1.9 9.6 7.7 0.77

INFORME

Se generaron 100 números pseudoaleatorios con runif(100) en R y se evaluó su aleatoriedad y uniformidad mediante varias pruebas:

  • Chi-cuadrado y Kolmogorov-Smirnov: indicaron ligeras desviaciones de uniformidad, es decir, los números no siguen perfectamente una distribución uniforme.

  • Prueba de corridas (Run Test): mostró que la secuencia es aproximadamente independiente, confirmando aleatoriedad en el orden de los números.

  • Prueba de Poker: validó que las combinaciones de dígitos cumplen con la aleatoriedad esperada, con un valor p alto (0.97).

Conclusión: Los números pseudoaleatorios generados son aceptablemente aleatorios, con pequeñas irregularidades en la uniformidad, pero cumplen las pruebas de independencia y de Poker.