/************************************************************************* * √енератор экспоненциально распределенных случайных чисел * *************************************************************************/ public RandomGeneratorsMethod5(double lambda) { System.Diagnostics.Debug.Assert(lambda > 0, "RndExponential: Lambda<=0!"); RandomGeneratorsMethod1 rand1 = new RandomGeneratorsMethod1(); result = -(Math.Log(rand1.GetSolution()) / lambda); }
/************************************************************************* * Генератор нормально распределенных случайных чисел. * * Генерирует два независимых случайных числа, имеющих стандартное * распределение. По затратам времени равен подпрограмме RndNormal, * генерирующей одно случайное число. * *************************************************************************/ public RandomGeneratorsMethod3() { double x1 = 0; double x2 = 0; double u = 0; double v = 0; double s = 0; bool execute = true; while (execute == true) { RandomGeneratorsMethod1 rand1 = new RandomGeneratorsMethod1(); u = 2 * rand1.GetSolution() - 1; RandomGeneratorsMethod1 rand11 = new RandomGeneratorsMethod1(); v = 2 * rand11.GetSolution() - 1; s = AP.Math.Sqr(u) + AP.Math.Sqr(v); if (s > 0 & s < 1) { s = Math.Sqrt(-(2 * Math.Log(s) / s)); x1 = u * s; x2 = v * s; execute = false; } result1 = x1; result2 = x2; } }
/************************************************************************* Генератор нормально распределенных случайных чисел. Генерирует два независимых случайных числа, имеющих стандартное распределение. По затратам времени равен подпрограмме RndNormal, генерирующей одно случайное число. *************************************************************************/ public RandomGeneratorsMethod3() { double x1=0; double x2=0; double u = 0; double v = 0; double s = 0; bool execute = true; while (execute==true) { RandomGeneratorsMethod1 rand1 = new RandomGeneratorsMethod1(); u = 2 * rand1.GetSolution() - 1; RandomGeneratorsMethod1 rand11 = new RandomGeneratorsMethod1(); v = 2 * rand11.GetSolution() - 1; s = Timetable.Math.Math.Sqr(u) + Timetable.Math.Math.Sqr(v); if (s > 0 & s < 1) { s = Math.Sqrt(-(2 * Math.Log(s) / s)); x1 = u * s; x2 = v * s; execute = false; } result1 = x1; result2 = x2; } }
/************************************************************************* √енератор экспоненциально распределенных случайных чисел *************************************************************************/ public RandomGeneratorsMethod5(double lambda) { System.Diagnostics.Debug.Assert(lambda > 0, "RndExponential: Lambda<=0!"); var rand1 = new RandomGeneratorsMethod1(); result = -(Math.Log(rand1.GetSolution()) / lambda); }