/* * minValue: es el minimo de personas que llegan al andén * maxValue: es el máximo de personas que llegan al andén * lambda: es el deltaTiempo, intervalo de tiempo (en horas) * */ public static int Gamma(int minValue, int maxValue, double lambda) { double r2, m, x, y, fx, k; if ((minValue >= maxValue) || (minValue < 0) || (maxValue < 0)) { throw new System.ArgumentException("Valores incorrectos"); } k = 9.0; GammaDistribution f = new GammaDistribution(k, lambda); m = (1 / lambda) * (k - 1); do { x = Rand(); r2 = Rand(); y = m * r2; fx = f.ProbabilityDensity(x); } while (y < fx); return Convert.ToInt32(minValue + (maxValue - minValue) * x); }
/// <inheritdoc/> public override double ProbabilityDensity(double x) { if (x < 0.0) { return(0.0); } else { return(x * gamma.ProbabilityDensity(x * x / 2.0)); } }
/// <inheritdoc /> public override double ProbabilityDensity(double x) { return(gamma.ProbabilityDensity(x / 2.0) / 2.0); }