LABORATORIO No.2 DE SIMULACION
Presentado A: Profesor Cesar Aceros
GENERACION DE NUMEROS ALEATORIOS.
1. Desarrolle un programa que genere
secuencias de números pseudoaleatorios siguiendo el método explicado en el
laboratorio:
Fig1. Método de generación de números pseudoaleatorios.
Respuesta No.1:
Se desarrolló
el programa en Excel donde se generan los números aleatorios siguiendo el
método explicado en el laboratorio mostrado en la figura1.
En el
generador se distinguen cuatro elementos:
• Xo, es el
valor inicial o semilla.
• a,
multiplicador, siendo 0 < a ≤ m.• c, incremento, siendo 0 < a ≤ m.
• m, módulo.
Fig2. Implementación de Método para Generar Números Pseudoaleatorios.
Para
corroborar los resultados se implementó también el código en MATLAB para hacer
los análisis de autocorrelación de los números pseudoaleatorios generados:
clc
close allclear all
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%GENERACION NUMEROS PSEUDOALEATORIA%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a = 4;% Constante Multiplicador.
Xo = 8;% Número Inicial Aleatorio.
c = 0;% Constante Aditiva.
m = 25;% Módulo.
u = zeros(m,1);
for i = 1:(m)
calculo =((a*Xo)+c);
u(i,1)= mod(calculo, m);
Xo=u(i,1);
end
figure(1)
subplot(2, 1, 1),stem(u(1:(m)));
title('NUMEROS PSEUDOALEATORIOS')
xlabel('n')
ylabel('u[n]')
subplot(2,1,2), autocorr(u) ;
% Cálculo de la Media.
n=length(u);
media=sum(u)/n
% Cálculo de la Varianza.
varianza=sum((u-media).^2)/n
El código arrojó la siguiente gráfica en donde se muestran los números generados y la función de autocorrelación, esta última nos permite verificar si el grado de aleatoriedad de los números generados, una de las propiedades de la aleatoriedad es que su función de autocorrelación tiende a un δ(k) (Función Delta de Kronecker) a medida que los estados (valor de m aumenta).
Fig3. Números Pseudoaleatorios con (a=4,
Xo=8, c=0 y m=25).
Xo = 16;% Número Inicial Aleatorio.
c = 2;% Constante Aditiva.
m = 25;% Módulo.
y
arrojó las siguientes gráficas:
Fig4. Números Pseudoaleatorios con (a=11,
Xo=16, c=2 y m=25).
Se observa claramente en la segunda gráfica de la fig.4 que la autocorrelación tiende a
un δ(k) (Función Delta de Kronecker), lo cual nos indica que la calidad de la
aleatoriedad de los números generados es mejor que los representados en la Fig.3.
2.
Explique otro método para generar
números aleatorios.
Respuesta No.2:
El método que se presentó en
el numeral No.1 producía números en los que cada término depende del anterior.
Ahora se presentará otro tipo de generadores en los que para generar un nuevo
término se utilizan dos elementos anteriores en lugar de uno como el mostrado
en el punto anterior, este corresponde al “Método
Aditivo”.
En este caso la longitud
máxima de periodo que se puede alcanzar es mayor, dado que para que se produzca
un ciclo es necesario que se repitan parejas de números.El primer generador de este tipo fue creado en los años 1950 y es la sucesión de Fibonacci que se muestra en la formula anterior.
A continuación se muestra el
código y las gráficas para el método aditivo:
clcclose all
clear all
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%GENERACION NUMEROS PSEUDOALEATORIA%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a = 4;% Constante Multiplicador.
Xn = 16;% Número Inicial Aleatorio.
Xn_1 = 15
c = 2;% Constante Aditiva.
m = 25;% Módulo.
u = zeros(m,1);
for i = 1:(m)
if i>1
Xn_1 = u((i-1),1)
end
calculo =(a*(Xn+Xn_1))+c;
u(i,1)= mod(calculo, m);
Xn=u(i,1);
end
figure(2)
subplot(2, 1, 1),stem(u(1:(m)));
title('NUMEROS PSEUDOALEATORIOS')
xlabel('n')
ylabel('u[n]')
subplot(2,1,2), autocorr(u) ;
% Cálculo de la Media.
n=length(u);
media=sum(u)/n
% Cálculo de la Varianza.
varianza=sum((u-media).^2)/n
Fig5. Números Pseudoaleatorios con el
método aditivo.
No hay comentarios:
Publicar un comentario