2016-01-10 6 views
0

Я пытаюсь сделать линию с разбросанными точками вокруг функции y = 2x. Точки должны иметь случайное отклонение между -0.5 и 0.5 по сравнению с нормальной функцией (что F (X)):Рассеянный сюжет Numpy Matplot

def f(x): 
    return 2 * x 

def g(x): 
    return f(x) - np.random.uniform(-0.5, 0.5) 

x = np.linspace(0, 5, 51) 
y = f(x) 
y2 = g(x) 

# plot 
plt.plot(t, y, 'b-') 
plt.plot(t, y, 'ro') 
plt.show() 

И конечно, у2 теперь будет рассеянная линией, где все точки имеют одинаковые отклонение, так как случайное число одинаково для всех точек. Теперь я задаюсь вопросом, как я мог бы сделать так, чтобы каждая точка имела случайное отклонение (так как я могу выполнить действие для каждой точки индивидуально). Заранее спасибо!

ответ

1

Да: пройти size=(51,) (или лучше, используйте форму x массива), чтобы np.random.uniform() рисовать, что многие образцы из равномерного распределения:

import numpy as np 
import matplotlib.pyplot as plt 
def f(x): 
    return 2 * x 

def g(x): 
    return f(x) - np.random.uniform(-0.5, 0.5, size=x.shape) 

x = np.linspace(0, 5, 51) 
y = f(x) 
y2 = g(x) 

# plot 
plt.plot(x, y, 'b-') 
plt.plot(x, y2, 'ro') 
plt.show() 

enter image description here

Смежные вопросы