Как сгенерировать образцы с использованием Inverse Transform Sampling с заданным настроенным PDF в Python? - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть PDF:

$$ P(\varepsilon) = \frac{1}{4k} \mathrm{sech}^2 \frac{\varepsilon}{2k}$$

CDF:

$$ CDF(\varepsilon) = \frac{\tanh(\frac{\varepsilon}{2k})}{2} $$

и обратный CDF:

$$ CDF^{-1}(c) = \frac{c}{2\tanh^{-1}(2k_BT)} $$

Теперь, что я должен сделать, чтобы сгенерировать N выборок, с моим PDF P (\ varepsilon) с заданным k?

Вот что у меня есть:

import numpy as np
def sampleConduction(N, kT):

    for i in range(N):
        c = np.random.random()
        list = [c]
        print('list=',list) 
    g = np.column_stack(list)
    print('g=',g)

     d = np.arctanh(2*list)+2*kT

    return d

sampleConduction(3,0.1)

Результат этого кода:

list= [0.7687170402304889]
list= [0.24759083266582882]
list= [0.18334770166799108]
g= [[0.1833477]]

array([0.38544466, 0.38544466]) # d

Я хотел объединить 3 списка в один, но не удалось с помощью np.column_stack ().Что мне делать дальше?

Большое спасибо!

...