2016-09-24 2 views
-2

Я могу генерировать случайные образцы нормального распределения в numpy следующим образом.Генерация нормального распределения в порядке python, numpy

>>> mu, sigma = 0, 0.1 # mean and standard deviation 
>>> s = np.random.normal(mu, sigma, 1000) 

Но они в случайном порядке, очевидно. Как я могу генерировать числа по порядку, то есть значения должны подниматься и падать, как в нормальном распределении.

Другими словами, я хочу создать кривую (гауссово) с mu и sigma и n количество точек, которые я могу ввести.

Как это сделать?

+0

вы имеете в виду, что вы хотите, учитывая некоторый массив значений х, порождаете множество у значений, которые являются значением нормального распределения при значениях x? –

+0

да именно то, что я хочу, но я должен уметь определять количество сгенерированных точек. –

+1

Итак, чтобы было ясно, вы хотите (1) генерировать * случайный * образец x-координат размера n (из нормального распределения) (2) оценить нормальное распределение по значениям x (3) х-величины по величине нормального распределения в их положениях? –

ответ

1

Чтобы (1) создать случайный образец x-координат размера n (из нормального распределения) (2) оценить нормальное распределение по значениям x (3), сортировать значения x по величине нормальное распределение на свои позициях, это будет делать трюк:

import numpy as np 

mu,sigma,n = 0.,1.,1000 

def normal(x,mu,sigma): 
    return (2.*np.pi*sigma**2.)**-.5 * np.exp(-.5 * (x-mu)**2./sigma**2.) 

x = np.random.normal(mu,sigma,n) #generate random list of points from normal distribution 
y = normal(x,mu,sigma) #evaluate the probability density at each point 
x,y = x[np.argsort(y)],np.sort(y) #sort according to the probability density 
Смежные вопросы