Я хочу для генерации нормально распределённой случайной величины на языке Python воспользоваться методом random.normalvariate(mu, sigma) из модуля random. Однако я не сумел найти как этот метод реализован. Я надеюсь что там используется метод Бокса-Мюллера в одной из двух вариаций, расписанных на Википедии (потому что ещё есть методы, основанные на ЦПТ, которые мне не нравятся). Основной вопрос: это так или нет? Где можно посмотреть реализацию этого метода?
Ответ
В исходниках 2.7 и в 3.5 (ссылка есть в другом ответе) написано следующее:
def normalvariate(self, mu, sigma):
"""Normal distribution.
mu is the mean, and sigma is the standard deviation.
"""
# mu = mean, sigma = standard deviation
# Uses Kinderman and Monahan method. Reference: Kinderman,
# A.J. and Monahan, J.F., "Computer generation of random
# variables using the ratio of uniform deviates", ACM Trans
# Math Software, 3, (1977), pp257-260.
Комментариев нет:
Отправить комментарий