Новости:

Форум на данный момент в стадии обновления. Если у Вас возникли проблемы со входом в свою учетную запись - просьба писать на email: info@excel-vba.ru

Главное меню

VBA. Генерировать числа по раномерному закону

Автор lu-lu, 17.12.2016, 18:20:55

« назад - далее »

lu-lu

Добрый день. Есть 2 функции для генерации чисел по показательному распределению. Нужно изменить их так, чтобы числа генерировались по равномерному закону.
Function Time_Cli()
Time_Cli = Int(-tcl * Log(Rnd) + 1)
End Function

Function Time_Ser()
Time_Ser = Int(-tser * Log(Rnd) + 1)
End Function

Формула для равномерного распределения: INT [a + (b-a)∙R] + 1, где а=0, в=2*tser, Rє(0,1).
Подскажите, пожалуйста, как правильно это записать?

Alex_ST

Цитата: lu-lu от 17.12.2016, 18:20:55Есть 2 функции для генерации чисел по показательному распределению
Ваши функции либо всегда возвращают 0, либо вообще не работают.
Поясняю: т.к. переменные tcl и tser у Вас не заданы, то, если не декларирована Option Explicit, их значения всегда = 0. А умножение чего-либо (кроме бесконечности, конечно  :) ) на 0 всегда даст результат 0.
Если же Option Explicit всё-таки продекларирована, то функции вообще будут вылетать по ошибке.
С уважением, Алексей

Perfect2You

Если это константы и определены на уровне модуля, то вполне могут работать функции.
Function Time_Ser() 
Time_Ser = Int(2 * tser * Rnd) + 1
End Function


Вторая функция должна быть аналогична, но только Вы знаете: какую переменную там использовать - tser  или tcl.

Яндекс.Метрика Рейтинг@Mail.ru