Есть ли в случайном модуле Python замена numpy.random.exponential? - PullRequest
3 голосов
/ 18 марта 2011

Я давно пользуюсь функцией Numpy numpy.random.exponential.Теперь я вижу, что модуль Python random имеет много функций, о которых я не знал.Есть ли что-то, что заменяет numpy.random.exponential?Было бы неплохо исключить требование numpy из моего проекта.

Ответы [ 2 ]

4 голосов
/ 18 марта 2011

Если что-то о random.expovariate() не удовлетворяет вашим потребностям, вы также можете легко развернуть свою собственную версию:

def exponential(beta):
    return -beta * math.log(1.0 - random.random())

Кажется, что это излишне, если вы зависите от NumPy только для этой функции..

Обратите внимание, что эта функция принимает среднее значение beta в качестве параметра, как и версия NumPy, тогда как параметр lambd для random.expovariate() является обратным beta.

3 голосов
/ 18 марта 2011

http://docs.python.org/library/random.html#random.expovariate

random.expovariate (lambd)

Экспоненциальное распределение.lambd равен 1,0, деленному на желаемое среднее значение.Это должно быть ненулевым.(Параметр будет называться «lambda», но это зарезервированное слово в Python.) Возвращаемые значения варьируются от 0 до положительной бесконечности, если lambd положительный, и от отрицательной бесконечности до 0, если lambd отрицательный.

...