Mat*_*olz 2 python random algorithm probability
我正在努力解决一个简单的问题.我有一个功能,我想让它只在我称之为12%的情况下做事.
我已经写了一个有效的功能,但它不够准确.Python中的示例:
// probability to execute the function is 50%
anz_prozent_wahrscheinlichkeit = 50
if anz_prozent_wahrscheinlichkeit == 0:
print "beep, error"
haeufigkeit = 100 / anz_prozent_wahrscheinlichkeit
// notice: random.randint generates a random number between param 1 and param 2
zufall = random.randint(1, haeufigkeit)
if zufall == 1:
execute my function()
Run Code Online (Sandbox Code Playgroud)
这适用于百分比,如10%,20%等,但不适用于33%,因为它会四舍五入.
你有什么主意吗?这听起来很简单,但我认为它并非如此微不足道.
提前致谢!
我会这样使用random.random(),就像这样:
if random.random() < anz_prozent_wahrscheinlichkeit / 100.:
execute my function()
Run Code Online (Sandbox Code Playgroud)
这使用浮点数学,因此不限于整数百分比(例如,anz_prozent_wahrscheinlichkeit = 0.1可以正常工作).
这应该做的伎俩:
zufall = random.randrange(0, 100)
if zufall < 12:
# execute my function()
Run Code Online (Sandbox Code Playgroud)