У меня проблема с генерацией случайных чисел с нормальным распределением в VBA.Я работаю над NSGAII.Я использую «Application.WorksheetFunction.Norm_Inv (Rnd, Mean, Deviation)» для генерации случайных чисел с нормальным распределением.Но у меня возникает эта ошибка:
Ошибка времени выполнения '1004': невозможно получить свойство Norm_Inv класса функций листа
Как я могу исправить эту ошибку?
Я уже использовал этот код в другом простом макросе, и он работает.Но при использовании этого кода в коде NSGAII возникает ошибка!(Большое количество переменных (double, long, Boolean и т. Д.) И двумерные массивы определены и используются в коде NSGAII, и он состоит из циклов do while, for и т. Д.)
Я использовалточка останова в строке «Функция GenerateNormRand () As Double».когда я ломаюсь и продолжаю (запускаю код шаг за шагом), ошибки нет!Но когда нет, возникает ошибка.
Option Explicit
Function Mutation () As Variant
.
.
.
Dim RandomNumber As Double
RandomNumber = GenerateNormRand ()
.
.
.
End Function
Function GenerateNormRand () as double
Dim myrand As Double
randomize
myrand = Application.WorksheetFunction.Norm_Inv(Rnd, 0, 5)
GenerateNormRand = myrand
End Function
Даже с явным объявлением Double для каждой входной и выходной переменной строка GenerateNormRand = Application.WorksheetFunction.Norm_Inv ... вызывает ошибку времени выполнения 1004:
Sub TestThisFunction()
MsgBox GenerateNormRand
End Sub
Function GenerateNormRand() As Double
Randomize
GenerateNormRand = Application.WorksheetFunction.Norm_Inv( _
CDbl(Rnd), CDbl(0), CDbl(5))
End Function