コード例 #1
0
        /*************************************************************************
        *  √енератор экспоненциально распределенных случайных чисел
        *
        *************************************************************************/
        public RandomGeneratorsMethod5(double lambda)
        {
            System.Diagnostics.Debug.Assert(lambda > 0, "RndExponential: Lambda<=0!");
            RandomGeneratorsMethod1 rand1 = new RandomGeneratorsMethod1();

            result = -(Math.Log(rand1.GetSolution()) / lambda);
        }
コード例 #2
0
        /*************************************************************************
        *  Генератор нормально распределенных случайных чисел.
        *
        *  Генерирует   два   независимых   случайных   числа,   имеющих  стандартное
        *  распределение.   По   затратам   времени  равен   подпрограмме  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;
            }
        }
コード例 #3
0
        /*************************************************************************
        Генератор нормально распределенных случайных чисел.

        Генерирует   два   независимых   случайных   числа,   имеющих  стандартное
        распределение.   По   затратам   времени  равен   подпрограмме  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;
            }
        }
コード例 #4
0
        /*************************************************************************
        √енератор экспоненциально распределенных случайных чисел

        *************************************************************************/
        public RandomGeneratorsMethod5(double lambda)
        {
            System.Diagnostics.Debug.Assert(lambda > 0, "RndExponential: Lambda<=0!");
            var rand1 = new RandomGeneratorsMethod1();
            result = -(Math.Log(rand1.GetSolution()) / lambda);
        }