Генерация нормального распределения по порядку python, numpy

Я могу генерировать случайные выборки нормального распределения в numpy, как это.

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

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

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

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


person Riken Shah    schedule 24.09.2016    source источник
comment
Вы имеете в виду, что хотели бы, учитывая некоторый массив значений x, сгенерировать набор значений y, которые являются значениями нормального распределения в значениях x?   -  person Angus Williams    schedule 24.09.2016
comment
да, именно то, что я хочу, но я должен иметь возможность определять количество сгенерированных очков.   -  person Riken Shah    schedule 24.09.2016
comment
Итак, чтобы внести ясность, вы хотели бы (1) создать случайную выборку x-координат размера n (из нормального распределения) (2) оценить нормальное распределение по x-значениям (3) отсортировать значения x по величине нормального распределения в их позициях?   -  person Angus Williams    schedule 24.09.2016
comment
Да, это очень помогает, теперь я понял, как это сделать из шагов.   -  person Riken Shah    schedule 24.09.2016
comment
Если я опубликую свой ответ, вы примете?   -  person Angus Williams    schedule 24.09.2016
comment
Конечно...........   -  person Riken Shah    schedule 24.09.2016
comment
спасибо, я спрашиваю только потому, что я уже написал фрагмент кода для этого, прежде чем перепроверил то, что вы хотели!   -  person Angus Williams    schedule 24.09.2016
comment
Зачем нужны случайные выборки? Похоже, вам просто нужна функция, которая вычисляет функцию плотности вероятности (PDF) нормального распределения.   -  person Warren Weckesser    schedule 24.09.2016


Ответы (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
person Angus Williams    schedule 24.09.2016