权重随机数到范围

Weight random number towards range

假设我正在使用范围内的随机数:

random.randrange(100)

假设如果它给出的数字小于或等于 25,你赢了,如果它给出的数字大于 25,我赢了。这样我就有75%的机会赢。

我如何按某个百分比(比如 1%)对数字大于 25 的可能性进行加权。

所以基本上我试图将我获胜的几率再提高 1%,而不只是说,"you win at 24 or less."

如果不清楚,请告诉我。

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

另一个解决方案是添加一个 if,如果玩家在第一次尝试中失败,则获胜率为 1%。

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

获取一个小于您的范围的随机数。假设您想要 1-100,大部分是 60 岁。

随机1-5

1时,随机60-69

否则随机1-100

将是 28% 60s,如果我的数学是正确的

--z

对于您的示例,我相信您想要随机 1-100,然后在 1 随机 26-100。这不完全是 1% 的增加,但您可以 fiddle 通过数学计算得到您想要的百分比。

看来你想要 "unfair" 个骰子,可以这么说。

如果您知道所需的获胜几率,获得此结果的一种方法是首先决定您是否获胜。如果您赢了,则在中奖号码中选择一个号码。如果您输了,请在输的号码中选择一个号码。

例如:

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