﻿import random  # 乱数を扱うためのモジュールをインポート
import math  # 数学関係の機能をまとめたモジュールをインポート
n = 100000  # 試行回数
triangle_areas = [0.0] * n  # 三角形OABの面積を格納するリスト
random.seed(1)  # 乱数のシード値を固定
for i in range(n):
    arg_a = random.uniform(0, 2*math.pi)  # 線分OAとx軸とのなす角
    arg_b = random.uniform(0, 2*math.pi)  # 線分OBとx軸とのなす角
    # 三角形OABの面積 = |sin(argA - argB)| / 2
    triangle_areas[i] = abs(math.sin(arg_a - arg_b)) / 2

# 三角形OABの面積の期待値を表示
print(sum(triangle_areas) / n)  # モンテカルロ法
print(1.0 / math.pi)  # 参考：理論値