import numpy as np
import matplotlib.pyplot as plt
from scipy import integrate, optimize

# функция распределения
def distr(x):
    return np.exp(-x*10)*(np.cos(np.exp(x*10))+1)
# ее интеграл
s = integrate.quad(distr, 0, 1, limit=1000, full_output=1)[0]
def distr_int(x):
    return integrate.quad(distr, 0, x, limit=100, full_output=1)[0] / s
# обратная от интеграла
def inv(x):
    return optimize.fsolve(lambda z: distr_int(z) - x, x0=0.5)[0]

x = np.random.rand(10)
# применяем распределение
y = np.vectorize(inv)(x)