Вы можете создать одно из множества случайных распределений и добавить его к своим данным. Например, вот нормальный распределенный шум со стандартным отклонением 0,05, добавленный ко всем вашим наблюдениям (число которых я уменьшил для лучшего отображения):
import numpy as np
import matplotlib.pyplot as plt
n = 200
def target(x):
return np.exp(-(x - 2)**2) + np.exp(-(x - 6)**2/10) + 1/ (x**2 + 1)
x = np.linspace(-2, 10, n)
standardDev = 0.05
noise = np.random.normal(0, standardDev, n)
y = target(x) + noise
plt.plot(x, y);