代码之家  ›  专栏  ›  技术社区  ›  B Furtado

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

  •  0
  • B Furtado  · 技术社区  · 8 年前

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

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

    谢谢

    2 回复  |  直到 8 年前
        1
  •  1
  •   Saeid MMF    8 年前

    为什么要制造东西 complicated ?

    x 0 在你的列表理解中。

    请这样尝试:

    x = int(random.gammavariate(3,3))
    [x if x < 21 else 20]
    
        2
  •  0
  •   BPL    8 年前

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