0
2

More than 3 years have passed since last update.

「この事象はX回中にY回の確率で発生します。」

Posted at

はじめに

さまざまな場面である事象が発生する確率や精度を算出し、それを伝える場面があると思います。(例えば、「この事象が発生する確率は0.7327、73.27%です。」など。)この時、確率を言い換えて、X回にY回ですと言いたくありませんか?もしくは、「つまりは、何回中に何回発生するの?」と尋ねられることがあるかと思います。特に、聞き手は具体的にも聞きたいと思っています。

確率の値のみを見て、本記事のタイトルのような「この事象はX回中にY回の確率で発生します。」と言いたい時に、@daikikatsuragawa は頭がこんがらがってしまったことがありました。それゆえ、確率の値を入力値として、分数に変換し出力し、「この事象はX回中にY回の確率で発生します。」と言うことができるようサポートする関数を作成しました。

「この事象はX回中にY回の確率で発生します。」

コードは以下のようになりました。

sample(1)
from decimal import Decimal
from fractions import Fraction


# 確率を分数に変換する関数(Fraction型)
def be_result_fraction(result, max_denominator=100):
    return Fraction(Decimal(str(result))).limit_denominator(max_denominator)

# あらかじめ算出した確率
result = 0.33
# 分母の最大値
max_denominator = 100

result_fraction = be_result_fraction(result, max_denominator)

# 分数に変換した確率
print(result_fraction)

# 活用例(「この事象はX回中にY回の確率で発生します。」)
print("「この事象は{}回中に{}回の確率で発生します。」".format(result_fraction.denominator, result_fraction.numerator))
sample_result(1)
33/100
「この事象は100回中に33回の確率で発生します。」

ランダムにいくつか確率を生成し、試してみましょう。また、分母の最大値も変化させていきます。

sample(2)
import random

for i in range(10):
    result = random.random()
    print("確率={}の場合".format(result))
    result_fraction=be_result_fraction(result, max_denominator=10)
    print("「この事象は{:4}回中に{:4}回の確率で発生します。」".format(result_fraction.denominator, result_fraction.numerator))
    result_fraction=be_result_fraction(result, max_denominator=100)
    print("「この事象は{:4}回中に{:4}回の確率で発生します。」".format(result_fraction.denominator, result_fraction.numerator))
    result_fraction=be_result_fraction(result, max_denominator=1000)
    print("「この事象は{:4}回中に{:4}回の確率で発生します。」".format(result_fraction.denominator, result_fraction.numerator))
    print("------------------------------------------------------------")
sample_result(2)
確率=0.09224231812091621の場合
「この事象は  10回中に   1回の確率で発生します。」
「この事象は  65回中に   6回の確率で発生します。」
「この事象は 477回中に  44回の確率で発生します。」
------------------------------------------------------------
確率=0.051084073961926824の場合
「この事象は  10回中に   1回の確率で発生します。」
「この事象は  98回中に   5回の確率で発生します。」
「この事象は 646回中に  33回の確率で発生します。」
------------------------------------------------------------
確率=0.7599338943119561の場合
「この事象は   4回中に   3回の確率で発生します。」
「この事象は  25回中に  19回の確率で発生します。」
「この事象は 604回中に 459回の確率で発生します。」
------------------------------------------------------------
確率=0.031495030898698206の場合
「この事象は   1回中に   0回の確率で発生します。」
「この事象は  95回中に   3回の確率で発生します。」
「この事象は 127回中に   4回の確率で発生します。」
------------------------------------------------------------
確率=0.8164261278465491の場合
「この事象は   5回中に   4回の確率で発生します。」
「この事象は  49回中に  40回の確率で発生します。」
「この事象は 207回中に 169回の確率で発生します。」
------------------------------------------------------------
確率=0.5320604454866015の場合
「この事象は   9回中に   5回の確率で発生します。」
「この事象は  47回中に  25回の確率で発生します。」
「この事象は 733回中に 390回の確率で発生します。」
------------------------------------------------------------
確率=0.49972055635837187の場合
「この事象は   2回中に   1回の確率で発生します。」
「この事象は   2回中に   1回の確率で発生します。」
「この事象は 999回中に 499回の確率で発生します。」
------------------------------------------------------------
確率=0.05425194009628509の場合
「この事象は  10回中に   1回の確率で発生します。」
「この事象は  92回中に   5回の確率で発生します。」
「この事象は 682回中に  37回の確率で発生します。」
------------------------------------------------------------
確率=0.1371848170653207の場合
「この事象は   7回中に   1回の確率で発生します。」
「この事象は  51回中に   7回の確率で発生します。」
「この事象は 277回中に  38回の確率で発生します。」
------------------------------------------------------------
確率=0.5388218822530633の場合
「この事象は   9回中に   5回の確率で発生します。」
「この事象は  13回中に   7回の確率で発生します。」
「この事象は 425回中に 229回の確率で発生します。」
------------------------------------------------------------

分子、分母が適切な値になっていますね。これに基づき微調整して他者に伝えることができそうです。

まとめ

これにより、「この事象はX回中にY回の確率で発生します。」と言いたい放題です。

参考

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2