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

2024-09-29 23:32:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从伽玛变量中提取一个数,但我想设置一个上限。 为什么这不起作用?你知道吗

import random
[int(random.gammavariate(3, 3)) if x < 21 else 20 for x in range(1)]

Out[59]: [22]

谢谢。你知道吗


Tags: inimportforifrangerandomoutelse
2条回答

为什么要制造东西?你知道吗

x在列表中总是0。你知道吗

这样试试:

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

如果我理解正确,您希望将gamma distribution后面的随机值钳制在某个范围[0-20]内,您可以这样做:

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,而不是你的随机伽马值,我假设这不是你想要的

相关问题 更多 >

    热门问题