1. 배경

$$ P(\theta|D) = \frac{P(D|\theta)P(\theta)}{\int P(D|\theta)P(\theta)\,d\theta} $$

2. 함수의 적분값 구하기

$$ \begin{align} \int g(x)dx = \int \frac{g(x)}{f(x)}f(x)dx = E_{x \sim f(x)}\left(\frac{g(x)}{f(x)}\right) \approx \frac{1}{N}\sum_{n=1}^{N}\frac{g(x_{n})}{f(x_{n})}

\end{align} $$

$$ \begin{align} \frac{1}{N}\sum_{n=1}^{N}\frac{g(x_{n})}{f(x_{n})} = \frac{1}{N}\sum_{n=1}^{N}\frac{g(x_{n})}{\frac{1}{(b-a)}} = (b-a)\sum_{n=1}^{N}\frac{g(x_{n})}{N} \end{align} $$

import numpy as np
import math

def calc_integral_of_func(uniform_samples, func, start, end):
		func_output = [func(i) for i in uniform_samples]
		integral = (end - start) * sum(func_output) / len(func_output)
		
    return integral
    
a, b, N = 0, 2, 10000
uniform_samples = np.random.uniform(a, b, N)
func = labda x : 3*math.pow(x, 2)
calc_integral_of_func(uniform_samples, func, a, b)