from random import * def f(x): return x**2-3*x+5 def monte_carlo(f,a,b,M,n): S = 0 for k in range(n): (x,y) = (uniform(a,b),uniform(0,M)) if y < f(x): S += 1 return S/n*M*(b-a)