﻿import random  # 乱数を扱うためのモジュールをインポート
n = 100000  # 試行回数
triangleAreas = [0.0] * n  # 三角形ABQの面積を格納するリスト
random.seed(1)  # 乱数のシード値を固定
for i in range(n):
    omega = random.uniform(0, 4)  # U(0,4)に従う乱数を1個生成
    if omega <= 1:  # 点Qが辺AB上にあるとき
        triangleAreas[i] = 0.0
    elif omega <= 2:  # 点Qが辺BC上にあるとき
        triangleAreas[i] = (omega - 1) / 2
    elif omega <= 3:  # 点Qが辺CD上にあるとき
        triangleAreas[i] = 0.5
    elif omega <= 4:  # 点Qが辺DA上にあるとき
        triangleAreas[i] = (4 - omega) / 2

# 三角形ABQの面積の期待値を表示
print(sum(triangleAreas) / n)  # モンテカルロ法
print(1/4)  # 参考：理論値