通用编程算法:仅占所有情况的12%

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%,因为它会四舍五入.

你有什么主意吗?这听起来很简单,但我认为它并非如此微不足道.

提前致谢!

NPE*_*NPE 8

我会这样使用random.random(),就像这样:

if random.random() < anz_prozent_wahrscheinlichkeit / 100.:
   execute my function()
Run Code Online (Sandbox Code Playgroud)

这使用浮点数学,因此不限于整数百分比(例如,anz_prozent_wahrscheinlichkeit = 0.1可以正常工作).


Cam*_*ron 5

这应该做的伎俩:

zufall = random.randrange(0, 100)
if zufall < 12:
    # execute my function()
Run Code Online (Sandbox Code Playgroud)