-1

我是 Python 新手,我一直在寻找如何解决以下问题。我想编写一个函数来接收输入:指数分布的最小值、最大值、比例(平均值)和大小。

例如:FunctionExponentialPDF(minimum=0.05, maximum=0.30, scale=0.2, size=1000)。

结果:指数分布,最小值为 0.05,最大值为 0.30,平均值为 0.20,包含 1000 个数据点。

如何扩展其他概率分布函数的代码,例如正态、泊松等?

谢谢你们!

4

1 回答 1

1

查看模块中的实值分布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)
于 2018-08-09T02:46:38.227 回答