ric*_*nis 24 python random normal-distribution gaussian
random.normalvariate()和之间有什么区别random.gauss()?
它们采用相同的参数并返回相同的值,执行基本相同的功能.
我从之前的回答中了解到,这random.gauss()不是线程安全的,但这在这种情况下意味着什么?程序员为什么要关心这个?或者提出,为什么Python的'随机'中包含一个线程安全且非线程安全的版本?
Lor*_*ton 19
这是个有趣的问题.一般来说,了解两个python实现之间差异的最好方法是自己检查代码:
import inspect, random
str_gauss = inspect.getsource(random.gauss)
str_nv=inspect.getsource(random.normalvariate)
Run Code Online (Sandbox Code Playgroud)
然后打印每个字符串以查看源的不同之处.快速查看代码表明,不仅它们的多线程行为不同,而且算法也不一样; 例如,根据以下注释normalvariate使用称为Kinderman和Monahan方法的东西str_nv:
# 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.
Run Code Online (Sandbox Code Playgroud)