Распределение Леви в C#

#c# #math #normal-distribution

#c# #математика #нормальное распределение

Вопрос:

Я реализовал свое собственное распределение Леви для программы, но, похоже, я получаю от него неправильные значения, и, потратив некоторое время, я все еще не могу найти, где я ошибся.

Это используется для генерации случайных однородных чисел (здесь double ), а также нормальных.

 public class RandomProportional : Random
{
   protected override double Sample()
    {
        return Math.Sqrt(base.Sample());
    }

    public override double NextDouble()
    {
        return (double)(Sample());
    }

    public double NextStdNormal()
    {
        double d1 = NextDouble();
        double d2 = NextDouble();
        return (double)(Math.Sqrt(-2.0 * Math.Log(d1)) * Math.Sin(2.0 * Math.PI * d2));
    }
}
  

Вот как я вычисляю сигму для распределения Леви:

 static double sigma_lev = Math.Pow(var_class.Gamma(1.0   var_class.beta) * Math.Sin(Math.PI * var_class.beta / 2.0) / (var_class.Gamma((1.0   var_class.beta) / 2.0) * var_class.beta * Math.Pow(2.0, (var_class.beta - 1.0) / 2.0)), 1.0 / var_class.beta);
  

Где var_class.Гамма (двойное x) вычисляется с использованием кода, найденного здесь : Гамма-функция

 Where var_class.beta = 1.5 (all the time)
  

Фактическая функция:

 public static double[] levy(int n)
    {
        RandomProportional randObj = new RandomProportional();
        double[] step = new double[n];
        for (int i = 0; i < n;   i)
        {
            step[i] = var_class.gam * randObj.NextStdNormal() * sigma_lev / Math.Pow(Math.Abs(randObj.NextStdNormal()), 1.0 / var_class.beta);
        }
        return step;
    }
  

Где var_class.gam

  0.075
  

Я использую эту формулу для реализации:

Леви

Некоторые примеры результатов, которые я получаю:

Значения

Оттуда, я думаю, я сделал что-то не так, но все еще не могу найти, что именно.

Комментарии:

1. Не могли бы вы определить метод double var_class.Gamma(double x) ?

2. @hoang Это указано в ссылке

3. Какие неправильные значения вы получаете? Какое значение mu вы используете?

4. Я добавил изображение формулы, а также некоторые значения, которые я получаю из кода, который я дал