【问题标题】:Percentage chance to make action采取行动的百分比机会
【发布时间】:2010-07-08 11:37:31
【问题描述】:

简单的问题:

percentage_chance = 0.36

if some_function(percentage_chance):
   # action here has 36% chance to execute
   pass

如何写some_function,或涉及percentage_chance的表达式来解决这个问题?

【问题讨论】:

    标签: python random


    【解决方案1】:

    你可以使用random.random:

    import random
    
    if random.random() < percentage_chance:
        print('aaa')
    

    【讨论】:

    • 太好了,现在我有 random.randrange(1,100) 在 range(1,int(chance*100)) 但我不认为这是正确的。
    • random.random 返回一个浮点数,一个连续的范围,而 randrange 默认返回一个 int,所以它是范围内的一组离散点。如果您的百分比机会落在离散点之间,这就像将其向上或向下舍入到最接近的值。
    【解决方案2】:
    import random
    if random.randint(0,100) < 36:
        do_stuff()
    

    【讨论】:

    • 最好使用randrange函数。
    • 该评论需要限定 randrange 会改变行为。
    【解决方案3】:

    只是为了让它更明确、更易读:

    def probably(chance):
        return random.random() < chance
    
    if probably(35 / 100):
        do_the_thing()
    

    【讨论】:

      【解决方案4】:

      此代码返回 1, 36% 的时间

      import random
      import math
      chance = 0.36
      math.floor( random.uniform(0, 1/(1-chance)) )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-19
        • 1970-01-01
        • 2021-02-18
        • 1970-01-01
        • 2015-03-05
        相关资源
        最近更新 更多