#2 【頭の体操】 乱数 ✕ 確率: 2つの一様乱数の大小の確率

アルゴリズムを実装する際によくお世話になる乱数。今回はこの乱数を用いて、頭の体操として確率計算をしてみましょう。

※ 本文は全て読めますが、「投銭」として最後に購入ボタンを設定していますので、気に入っていただけましたら応援宜しくお願いします。

それでは、以下の問を考えてみてください。

【問題】

画像1


答えは、0.3 (30%) になります。直観的にイメージできたでしょうか?

解析解が求められなかったとしても、実装でサンプリングをしてみると、0.3に近い解が得られることが分かるかと思います。

では解説に入っていきます。


【解説】

まず、求めるべき確率が以下のように表せることに着目しましょう。

画像2

「片方の乱数がある値 r を取った時、もう一方がその乱数より大きくなる確率」を、取り得るすべての r に対して計算している式になります。また、領域Dを上式で表しているのは

画像3

であるためです。よって、一様分布の確率密度関数を考えると、

画像4

であることから、求めるべき項は下式のように計算できます。

画像5

30%という答えが得られました。

サンプリングの実装をしてみても、30%くらいになりそうだということが分かります。

import numpy as np

np.random.seed(1234)

N = 1000000
c = 0

for _ in range(N):
    u1 = np.random.uniform(0, 30)
    u2 = np.random.uniform(0, 50)

    if u1 > u2:
        c += 1

print(c / N)  # => 0.299949

今回は2つの一様乱数を考えてみましたが、次回は3つの一様乱数で考えてみましょう!

※ 内容は以上が全てです。これ以降文章はありませんが、「投銭」として最後に購入ボタンを設定しています。気に入っていただけましたら応援宜しくお願いします。

ここから先は

0字

¥ 110

この記事が気に入ったらサポートをしてみませんか?