public static double Integrate(Func<double[], double> func, double[] a, double[] b, int samples)
{
var mc = new MonteCarloIntegration(a.Length, func);
for (int i = 0; i < a.Length; i++)
mc.Range[i] = new DoubleRange(a[i], b[i]);
mc.Iterations = samples;
mc.Compute();
return mc.Area;
}