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 に答える