# GENERADOR MULTIPLY-WITH-CARRY generador<-function(n,a,c0,m,sem){ z<-numeric(n) c<-numeric(n) z[1]<-sem%%m c[1]<-floor(c0) for (i in 2:n) { z[i]=(a*z[i-1]+c[i-1])%%m c[i]=floor((a*z[i-1]+c[i-1])/m)%%m } u<-z/m salida<-list("numeros"=u,"enteros"=z,"sesgo"=c) return(salida)} ##################################################### #Ejemplo 1: #La salida de la función la guardamos en una variable: generador(n=10000,a=25,c0=0,m=2^8,sem=1)->random1 random1 #Representación gráfica de los pares (z[i], z[i+1]) getwd() setwd("H:/simulacion") jpeg("representacion1_z.jpeg") random1$enteros->z1 plot(z1[-length(z1)],z1[-1],pch=20,cex=1) dev.off() #Representación gráfica de los pares (u[i], u[i+1]) getwd() setwd("H:/simulacion") jpeg("representacion1_u.jpeg") random1$numeros->u1 plot(u1[-length(u1)],u1[-1],pch=20,cex=1) dev.off() #HISTOGRAMA getwd() setwd("H:/simulacion") jpeg("histograma1.jpeg") hist(random1$numeros) dev.off() ##################################################### #Ejemplo 2: #La salida de la función la guardamos en una variable: generador(n=10000,a=25,c0=0,m=2^31-1,sem=1)->random2 random2 #Representación gráfica de los pares (z[i], z[i+1]) getwd() setwd("H:/simulacion") jpeg("representacion2_z.jpeg") random2$enteros->z2 plot(z2[-length(z2)],z2[-1],pch=20,cex=1) dev.off() #Representación gráfica de los pares (u[i], u[i+1]) getwd() setwd("H:/simulacion") jpeg("representacion2_u.jpeg") random2$numeros->u2 plot(u2[-length(u2)],u2[-1],pch=20,cex=1) dev.off() #HISTOGRAMA getwd() setwd("H:/simulacion") jpeg("histograma2.jpeg") hist(random2$numeros) dev.off() ##################################################### #Ejemplo 3: #La salida de la función la guardamos en una variable: generador(n=10000,a=16807,c0=0,m=2^8,sem=1)->random3 random3 #Representación gráfica de los pares (z[i], z[i+1]) getwd() setwd("H:/simulacion") jpeg("representacion3_z.jpeg") random3$enteros->z3 plot(z3[-length(z3)],z3[-1],pch=20,cex=1) dev.off() #Representación gráfica de los pares (u[i], u[i+1]) getwd() setwd("H:/simulacion") jpeg("representacion3_u.jpeg") random3$numeros->u3 plot(u3[-length(u3)],u3[-1],pch=20,cex=1) dev.off() #HISTOGRAMA getwd() setwd("H:/simulacion") jpeg("histograma3.jpeg") hist(random3$numeros) dev.off() ##################################################### #Ejemplo 4: #La salida de la función la guardamos en una variable: generador(n=10000,a=16807,c0=0,m=2^31-1,sem=1)->random4 random4 #Representación gráfica de los pares (z[i], z[i+1]) getwd() setwd("H:/simulacion") jpeg("representacion4_z.jpeg") random4$enteros->z4 plot(z4[-length(z4)],z4[-1],pch=20,cex=1) dev.off() #Representación gráfica de los pares (u[i], u[i+1]) getwd() setwd("H:/simulacion") jpeg("representacion4_u.jpeg") random4$numeros->u4 plot(u4[-length(u4)],u4[-1],pch=20,cex=1) dev.off() #HISTOGRAMA getwd() setwd("H:/simulacion") jpeg("histograma4.jpeg") hist(random4$numeros) dev.off() ######################################################################### #Ejemplo de prueba: #La salida de la función la guardamos en una variable: generador(n=10,a=6,c0=4,m=10,sem=4)->random random #Representación gráfica de los pares (z[i], z[i+1]) random$enteros->z plot(z[-length(z)],z[-1],pch=20,cex=1) #Representación gráfica de los pares (u[i], u[i+1]) random$numeros->u plot(u[-length(u)],u[-1],pch=20,cex=1) #HISTOGRAMA hist(random$numeros) #attach(random) #numeros #hist(numeros)