fjtello / SQL-C-sharp

Common programming and coding tips and howtos
0 stars 0 forks source link

SQL [#normal] #35

Open fjtello opened 7 years ago

fjtello commented 7 years ago

-- print 'Generacion de secuencia de valores que se ajusten a una distribuición Normal(mu, sigma)' declare @clave as varchar(36); set @clave = newid();

if(object_id('statNormal') is null) begin create table statNormal(id int identity(1,1), clave varchar(36), resultado int, realizaciones int, fechahora datetime default(getdate())); end

declare @experimentosBernoulli as int; set @experimentosBernoulli = 1000; declare @contadorExperimentos as int; set @contadorExperimentos = 0

declare @ex as table (id int identity(1,1), resultado int); -- print 'Generación de secuencia de valores mediante una distribución de Bernoulli';

declare @longitudSecuenciaBernoulli as int; set @longitudSecuenciaBernoulli = 100; declare @probabilidadExitoBernoulli as decimal(6, 4); declare @casosFavorablesBernoulli as int;

declare @favorableBernoulli as bit; declare @contadorBernoulli as int; declare @aleatorioBernoulli as decimal(6, 5); declare @vBernoulli as table (id int identity(1,1), aleatorio decimal(6,5), favorable tinyint);

while(@contadorExperimentos < @experimentosBernoulli) begin

set @probabilidadExitoBernoulli = 50;
set @contadorBernoulli = 0;
set @casosFavorablesBernoulli = 0;

while(@contadorBernoulli < @longitudSecuenciaBernoulli)
begin
    set @contadorBernoulli = @contadorBernoulli + 1;
    set @favorableBernoulli = 0;
    set @aleatorioBernoulli = rand()

    if(@aleatorioBernoulli < (@probabilidadExitoBernoulli / 100.0)) set @favorableBernoulli = 1;

    set @casosFavorablesBernoulli = @casosFavorablesBernoulli + @favorableBernoulli;

    insert into @vBernoulli (aleatorio, favorable) values (@aleatorioBernoulli, @favorableBernoulli);
end

set @contadorExperimentos = @contadorExperimentos + 1

insert into @ex (resultado) values (@casosFavorablesBernoulli);

end

insert into statNormal select @clave clave, resultado, count(*) realizaciones, getdate() fechahora from @ex group by resultado order by resultado;