LA TAREA #5, COMPROBAR LAS PROPIEDADES DE LOS NUMEROS SEUDO-ALEATORIOS
Enviado por Tati G • 12 de Octubre de 2015 • Tutorial • 1.340 Palabras (6 Páginas) • 149 Visitas
TAREA #5, COMPROBAR LAS PROPIEDADES DE LOS NUMEROS SEUDO-ALEATORIOS
PROPIEDADES:
1)-LA MEDIA DEBE SER CERCANA A 1/2
2)-LA VARIANZA DEBE SER CERCANA A 1/12
3)-DISTRIBUCION PROBABILIDAD TIENE QUE SER UNIFORME (DISTRIBUCION GAUSSIANA)
4)-TENER UN PERIODO O CICLO DE VIDA DE 2^n
1. media
La media aritmética es un promedio estándar que a menudo se denomina "promedio".
[pic 1]
La media aritmética es el promedio de un conjunto de valores, o su distribución.
function [ med ] = media( vec )
med = sum(vec)/length(vec);
end
2. Varianza
function [va] = varian( me, de )
%% calcula varianza
% el operador .^2 eleva punto a punto las componentes
% del arreglo
% ve: es la desviación estandar
va = sum((me - de).^2)/(length(de)-1);
end
3. Distribucion Normal
La distribución normal, también llamada distribución de Gauss o distribución gaussiana, es la distribución de probabilidad que con más frecuencia aparece en estadística y teoría de probabilidades. Esto se debe a dos razones fundamentalmente:
- Su función de densidad es simétrica y con forma de campana, lo que favorece su aplicación como modelo a gran número de variables estadísticas.
- Es, además, límite de otras distribuciones y aparece relacionada con multitud de resultados ligados a la teoría de las probabilidades gracias a sus propiedades matemáticas.
La función de densidad está dada por:
[pic 2]
Donde μ (Μ) es la media y σ (sigma) es la desviación estándar (σ2 es la varianza).
Muchas variables aleatorias continuas presentan una función de densidad cuya gráfica tiene forma de campana.
La importancia de la distribución normal se debe principalmente a que hay muchas variables asociadas a fenómenos naturales que siguen el modelo de la normal
function [ y ] = DistribucionNormal(x, media, DesvStandar)
y = (1 / (sqrt (2 * pi) * DesvStandar)) * (exp((-1/2)*(((x - media) / DesvStandar)).^2));
end
IMPLEMENTACION EN MATLAB
principal
%% Método congruencia
clc, clear all
%% Constantes
c = calcuC; %Obtiene un numero cuyo modulo de 8 sea igual a 5
k = 2; a = 2^k+1; % k >= 2
m = 523;
%X(1) = ceil(cputime); % tiempo redondeado o semilla
X(1) = ObtenerNumero(m);
%% Calculo
for con=1:1000
X(con+1) =mod((a*X(con)), m);
%X(con+1) = mod(c + a*X(con), m);
end
%% Normalización
alea = X/m; %Lo dividimos por m para que alea sea un numero entre 0 y 1
% max(alea), min(alea)
medi = media(alea) % la media 1/2
vari = varian( medi, alea) % varianza 1/12
xDistribucionNormal = 0:0.001:1;
yCongruencia = DistribucionNormal(xDistribucionNormal, medi, vari);
yDistribucionNormal = DistribucionNormal(xDistribucionNormal, 1/2, 1/12);
xMedia = 1/2; % Grafica la media en la Grafica
yMedia= 0:0.25:5;
plot(xMedia, yMedia, xDistribucionNormal, yDistribucionNormal, medi, yMedia, xDistribucionNormal, yCongruencia);
%legend('Distribución Normal', 'Distribución pseudoaleatoria')
calcula C
function [ C ] = calcuC
cond = false;
while(~cond) % ~ en la negación de booleano
t = clock; % toma los valores del reloj
posC = round(10*t(6)); % PosC toma el valor redondeado de los segundos
if(mod(posC, 8)==5) % restricción c mod 8 = 5
cond = true;
C = posC;
end
end
end
1.media
function [ med ] = media( vec )
...