假设我使用以下方法获取范围内的随机数:
random.randrange(100)
让我们说如果它给出的数字小于或等于25,你就赢了,如果它给出的数字大于25,我就赢了。那么我有75%的机会获胜。
如何将数字大于25的几率加权一定百分比,比如1%。
所以基本上我试图让我赢得另外1%的几率,而不仅仅是说,“你在24或更低的时候获胜。”
如果不清楚,请告诉我。
答案 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%的增加,但是你可以通过数学来获得你想要的百分比。