Mostrando entradas con la etiqueta Números aleatorios. Mostrar todas las entradas
Mostrando entradas con la etiqueta Números aleatorios. Mostrar todas las entradas

lunes, 5 de enero de 2015

Generador cuántico de números aleatorios

En Proceso de Datos es frecuente encontrarnos con la necesidad de simular el azar. Esto, clásicamente lo hemos resuelto con la generación de números pseudoaleatorios, basados en algoritmos (software).

No obstante, si deseamos tener una mayor precisión sobre la generación del azar, deberíamos resolverlo por sistemas de hardware. Estos dispositivos (TRNG, True Random Number Generator), generan números realmente aleatorios de naturaleza cuántica, basados en el campo electromagnético (Symul et al., 2011).

Si se desea familiarizar con este tipo de generadores recomendamos el siguiente enlace: 
http://qrng.anu.edu.au/index.php

Donde es posible verificar online el funcionamiento, por ejemplo, en la generación de números binarios:
http://qrng.anu.edu.au/RainBin.php
Y también hexadecimales:
http://qrng.anu.edu.au/RainHex.php

Ha superado los tests estándares del NIST (National Institute of Standards and Technology) y los de la batería de Diehard.

Referencias.
Symul,T.; Assad,S.M. and P. K. Lam,P.K. (2011). Appl. Phys. Lett. 98, 231103. http://dx.doi.org/10.1063/1.3597793 (access 5-1-2015).

miércoles, 25 de junio de 2014

Simulación en R: Matrices de correlaciones

Brevemente presentamos un procedimiento de simulación en R, que tiene como objetivo la generación de números pseudoaleatorios relacionados de acuerdo a un patrón fijado de antemano por el investigador. 
Posteriormente se presenta de forma gráfica la estructura alcanzada.
----
Procedimiento general de simulación:
library(psych)
library(MASS)
PatCorr <- matrix(c(1, 0.8, -0.4, 0.2,
                   0.8, 1,   0.15, 0.3,
                  -0.4, 0.15,   1, 0.1,  
                   0.2, 0.3, 0.1,   1),nrow=4)

M <- mvrnorm(5000, mu=rep(0,4), Sigma = PatCorr,empirical = TRUE)
---
Procedimiento de resultados:
head(M)  
pairs.panels(M)
---
Obteniéndose en este caso simulado...
            [,1]        [,2]       [,3]        [,4]
[1,]  0.04508237  0.13164350 -0.4929757  0.37310566
[2,]  1.07220292  0.67510691 -0.9520928 -1.01714666
[3,]  0.41117075  0.38988280 -0.6533527 -0.21138061
[4,] -0.05390150 -0.04880109  0.1695599 -0.05594154
[5,] -0.54652194  0.32840506  0.7111292 -0.18216643
[6,] -1.23544943 -1.51118618 -1.0223330  0.92505704
....

En caso de ajustar el valor de p para múltiples contrastes usaremos el procedimiento:
datos<-as.data.frame(M)

corr.test(datos, y = NULL, 
use = "pairwise",method="pearson",adjust="holm",alpha=.05)