## Set up a simulation study determining how the choice of function
## affects MC integration

import numpy as np              
import pandas as pd             
import matplotlib.pyplot as plt
from scipy.stats import gamma

# Integrate function f(x) = log(x)/abs(x-10) between 5 and 15

# Exact 
def f(x):
  return np.log(x)/pow(x-2,2)

def p1(x):
  return 1/10

def p2(x):
  return 1/5*np.exp(-x/5)

def p3(x):
  return gamma.pdf(x,3/2,scale =7/2)

def p4(x):
  return (15/2)/pow(x,2)

def draw_p4(n):
  return np.array(15/2/(15/10-np.random.uniform(0,1,n)))


B = 1000000
p1_draws = np.random.uniform(5,15,B)
p2_draws = gamma.rvs(1,scale=5,size=B)
p2_draws = p2_draws[(p2_draws>5)&(p2_draws<15)]
p3_draws = gamma.rvs(3/2,scale=7/2,size=B)
p3_draws = p3_draws[(p3_draws>5)&(p3_draws<15)]
p4_draws = draw_p4(B)

means = [np.mean(f(p1_draws)/p1(p1_draws)),
      np.mean(f(p2_draws)/p2(p2_draws)),
      np.mean(f(p3_draws)/p3(p3_draws)),
      np.mean(f(p4_draws)/p4(p4_draws))]

means
      
      
