我是 Python 新手,我一直在寻找如何解决以下问题。我想编写一个函数来接收输入:指数分布的最小值、最大值、比例(平均值)和大小。
例如:FunctionExponentialPDF(minimum=0.05, maximum=0.30, scale=0.2, size=1000)。
结果:指数分布,最小值为 0.05,最大值为 0.30,平均值为 0.20,包含 1000 个数据点。
如何扩展其他概率分布函数的代码,例如正态、泊松等?
谢谢你们!
我是 Python 新手,我一直在寻找如何解决以下问题。我想编写一个函数来接收输入:指数分布的最小值、最大值、比例(平均值)和大小。
例如:FunctionExponentialPDF(minimum=0.05, maximum=0.30, scale=0.2, size=1000)。
结果:指数分布,最小值为 0.05,最大值为 0.30,平均值为 0.20,包含 1000 个数据点。
如何扩展其他概率分布函数的代码,例如正态、泊松等?
谢谢你们!
查看模块中的实值分布random
,尤其是random.expovariate
.
您可以使用yield
例如将其制成生成器
import random
def exponential(lambd):
while True:
yield random.expovariate(lambd)
然后您可以使用itertools.islice
.
from itertools import islice
print(list(islice(exponential(1/0.3), 1000)))
如果要按一定间隔截断分布,可以先过滤掉。
from itertools import filterfalse
print(list(islice(filterfalse(lambda x: not 0.05 <= x <=0.30, exponential(1/0.3)), 1000)))
把这一切放在一起,
def FunctionExponentialPDF(minimum, maximum, scale, size):
return islice(filterfalse(lambda x: not minimum <= x <= maximum,
exponential(1/scale)),
size)