Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #18  
Antiguo 27-03-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Buenas, muchos saben que estos temas me dejan "picando" mucho. No me pude resistir y quiero aportar un poco:

Distribución Normal (por aproximación):

1. Parámetros de entrada:
1.1. Media = Mean
1.2. Desvio Estandar = Std
2. Parámetros de salida:
2.1. valor a estimar [reales] = X
3. Algoritmo:

1. sum = 0
2. repetir 12 veces:
2.1. u = Aleatorio()
2.2. sum = sum + u
3. X = (Std * (sum - 6.0)) + Mean;

Distribución Uniforme:
1. Parámetros de entrada:
1.1. Valor inferior = A
1.2. Valor superior = B
2. Parámetros de salida:
2.1. valor a estimar [reales] = X
3. Algoritmo:

1. u = Aleatorio()
2. X = A + u * (B - A)

Distribución Exponencial:
1. Parámetros de entrada:
1.1. Media = Mean
2. Parámetros de salida:
2.2. valor a estimar [reales] = X
3. Algoritmo:

1. u = Aleatorio()
2. X = (-1) * Mean * ln(u)

Por ahora tengo esas, que son las más comunes. Consideré bueno darlas a conocer ya que es algo fácil de obtener y conseguir, el vedadero corazón del problema es el "motor" de los generadores de eventos (si es que se emplea este método) y por consiguiente, el uso de las colas.

Aleatorio() es una función que devuelve un número aleatorio. Como dije antes, lo más común, y optimo, es que existan muchos generadores. Y cada uno por consiguiente devolveré diferentes números, si se programa a dicha función para seguir un único generador el simulador no funcionará correctamente por lo que se deberán programar los algoritmos en función de la cantidad de generadores.

Tal vez hacer que las funciones reciban como parámetro algún identificador del generador, de modo que se podría hacer algo como:

Código Delphi [-]
TiempoLlegada := DistbExpo.GetValue(Media,NroGenerador);

Siendo ahora, posiblemente, tener un DistExpo (una clase que implementa distribución exponencial) como el encargado de pasar el Nro a la función Aleatorio:

Código Delphi [-]
TDistbExpo.GetValue (Mean: real; GeneratorNumber: integer): real;
begin
  result := (-1) * Mean * ln(GeneratorList[GeneratorNumber].GetNumber);
end;

Bueno, para complicarlo alguito... en el ejemplo asumí que GeneratorList es una instancia de un TGeneratorList que tiene como una propiedad vectorial por defecto del tipo TGenerator. Este TGenerator implementa un método GetNumber encargado de devolver un número aletorio según algún algoritmo declarado (por ejemplo, el del un generador multiplicador mixto).

Como consejo, par hacerlo más fácil, separemos el verdadero motor de simulación del problema.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mexico.- Los anestecistas violan a sus buenotas pacientes, sera? Arcioneo La Taberna 22 27-09-2007 12:06:11
Cosas que he aprendido de mis pacientes seoane Humor 1 17-01-2007 01:47:13
Simulacion hmoner Varios 3 06-06-2005 15:31:32
Simulación ALT+TAB Perya API de Windows 2 15-02-2005 20:51:55
Inaugurado nuevo hospital japones en Madrid chutipascal Humor 0 05-12-2003 16:36:44


La franja horaria es GMT +2. Ahora son las 17:28:01.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi