def qKq_lebesgue(num_samples: int, qrbf: QuadratureRBFLebesgueMeasure):
    bounds = qrbf.integral_bounds._bounds
    samples = _sample_uniform(num_samples, bounds)
    qKx = qrbf.qK(samples)
    differences = np.array([x[1] - x[0] for x in bounds])
    volume = np.prod(differences)
    return np.mean(qKx) * volume
                                                  measure=measure)
    else:
        raise ValueError("Measure-integral-bounds combination not defined")

    print()
    print("measure: {}".format(MEASURE_INTBOUNDS))
    print("no dimensions: {}".format(D))
    print()

    # === qK ==============================================================
    num_runs = 100
    num_samples = 1e6
    num_std = 3

    qK_SAMPLES = np.zeros([num_runs, x2.shape[0]])
    qK = emukit_qrbf.qK(x2)[0, :]
    for i in range(num_runs):
        num_samples = int(num_samples)

        if MEASURE_INTBOUNDS == "Lebesgue-finite":
            qK_samples = qK_lebesgue(num_samples, emukit_qrbf, x2)
        elif MEASURE_INTBOUNDS == "GaussIso-infinite":
            qK_samples = qK_gauss_iso(num_samples, emukit_qrbf, x2)
        elif MEASURE_INTBOUNDS == "Uniform-infinite":
            qK_samples = qK_uniform(num_samples, emukit_qrbf, x2)
        elif MEASURE_INTBOUNDS == "Uniform-finite":
            qK_samples = qK_uniform(num_samples, emukit_qrbf, x2)
        else:
            raise ValueError("Measure-integral-bounds combination not defined")

        qK_SAMPLES[i, :] = qK_samples