2

我有一个函数,我想让它只在我调用它的 12% 的情况下执行操作。

我已经写了一个有效的函数,但它不够准确。

Python 中的示例:

# probability to execute the function is 50%
percent_probability = 50

frequency = 100 / percent_probability

r = random.randint(1, frequency)

if r == 1:
   my_function()

这适用于 10%、20% 等百分比,但不适用于 33%,因为它是四舍五入的。

我怎样才能正确地做到这一点?

4

3 回答 3

8

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

if random.random() < anz_prozent_wahrscheinlichkeit / 100.:
   execute my function()

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

于 2012-12-20T14:46:44.173 回答
5

这应该可以解决问题:

r = random.randrange(0, 100)
if r < 12:
    my_function()
于 2012-12-20T14:46:32.333 回答
3

最简单的方法是获取一个介于 0 和 1 之间的随机数,random.random()并检查它是否小于 0.12。这是一种通用方法(它也适用于带小数部分的百分比……)。

于 2012-12-20T14:46:30.120 回答