将随机伽马变量结果截断为上限

时间:2016-09-05 14:43:47

标签: python random

我想从gammavariate中绘制一个数字,但我想设置一个上限。 为什么这不起作用?

close

感谢。

2 个答案:

答案 0 :(得分:1)

为什么要制作complicated

x在列表理解中总是0

以这种方式尝试:

x = int(random.gammavariate(3,3))
[x if x < 21 else 20]

答案 1 :(得分:0)

如果我已经正确理解你想在某个范围[0-20]中跟随gamma distribution后面的随机值,你可以这样做:

import random


def clamp(x, min_value, max_value):
    return max(min(max_value, x), min_value)

min_value, max_value = 0, 20
print([clamp(int(random.gammavariate(3, 3)), min_value, max_value)
       for v in range(1)])

在你的例子中,你使用的是索引x而不是你的随机伽玛值,我假设这不是你想要的