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) = (a+(b-a)*random(),M*random()) if y < f(x): S += 1 return S/n*M*(b-a)