$$ P(\theta|D) = \frac{P(D|\theta)P(\theta)}{\int P(D|\theta)P(\theta)\,d\theta} $$
$$ \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)