权重随机数到范围
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
假设我正在使用范围内的随机数:
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