时间:2017-12-08 20:42:03

标签: python random probability

假设我使用以下方法获取范围内的随机数:

random.randrange(100)

让我们说如果它给出的数字小于或等于25,你就赢了,如果它给出的数字大于25,我就赢了。那么我有75%的机会获胜。

如何将数字大于25的几率加权一定百分比,比如1%。

所以基本上我试图让我赢得另外1%的几率,而不仅仅是说,“你在24或更低的时候获胜。”

如果不清楚,请告诉我。

3 个答案:

答案 0 :(得分:2)

好像你想要"不公平"骰子,可以这么说。

获得这个的一种方法是,如果你知道所需的获胜几率,首先要决定你是否获胜。如果您赢了,那么在中奖号码中选择一个号码。如果你输了,请在输掉的数字中选择一个数字。

例如:

import random

def die_roll():
    if random.random() < 0.26:
        return random.randrange(25)  # 0 to 24
    return random.randrange(25, 100)  # 25 to 99

答案 1 :(得分:1)

如果你想要25%的1%,你需要使用更大的样本并相应地使用一个值:100000和249750。

另一种解决方案是,如果玩家输掉第一次尝试,则添加1%获胜的if。

if random.range(100) > 25
  return "You Win"
else
 if random.range(100) < 1
   return "You Win"
 else
  return "You Lose"

答案 2 :(得分:1)

获取小于您的范围的随机数。假设你想要1-100,主要是60s。

随机1-5

当1,随机60-69

否则,随机1-100

如果我的数学是正确的话,

将是28%60s

- z

对于你的例子,我相信你想要随机1-100,然后随机1随机26-100。这不是1%的增加,但是你可以通过数学来获得你想要的百分比。