2013-02-12 6 views
2

Я пробовал найти один из этих ответов совсем немного и не могу найти то, что я ищу. Я уверен, что это довольно основательно, и я либо не знаю, как фразовать поиск того, что я ищу, я ошибаюсь.возвращать случайные переменные в пределах массива в зависимости от логической переменной или переменной resample в scipy

Использование SciPy Я хотел бы также:

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

x = np.random.normal(30,30/10) 
x = #random number 
x = #new random number 

конечной целью является чтобы получить этот бит кода (и еще несколько подобных ему), чтобы возвращать случайные переменные для чисел для g1 и g2, определяемых их распределением для каждого местоположения в гамма-массиве. Я был бы рад найти случайные значения в g1rand и g2rand, если бы это сработало, но я не смог понять, как заполнить гамма-массив циклом для этого. Конечной целью является запуск MC моделирования кода. Заранее спасибо.

disc = 11j #number of intervals 
depth = 50 
q = 300 #number of random sampls 
n = depth 
interval_thickness =abs(n/(abs(disc)-1)) 
depth_array = np.r_[0:n:(disc)] 
ld1 = 10.0 
ld2 = 70.0 
g1 = 120 
g1rand = np.random.normal(g1,g1/10,q) 
g2 = 60 
g2rand = np.random.normal(g2,g2/10,q) 
condlist = [depth_array <= 0,depth_array<=ld1, depth_array<=ld2] 
choicelist = [0, g1, g2] 
gamma = np.select(condlist, choicelist) 
interval_weight=interval_thickness*gamma 

ответ

0

Я не думаю, что я полностью понимаю, что вы пытаетесь сделать в вашей длинной части кода, но если вы хотите создать ваши случайные образцы один за другим, вы можете использовать scipy.stats.norm:

>>> import scipy.stats 
>>> x = scipy.stats.norm(loc=30, scale=30/10) # loc is mean, scale is stdev 
>>> x.rvs() # return a single random sample from distribution 
30.0640285320252 
>>> x.rvs() 
29.773804986818252 
>>> x.rvs(5) # returns an array of 5 random samples from distribution 
array([ 31.46684871, 28.5463796 , 30.37591994, 30.50111085, 32.19189648]) 
>>> x.mean() # recover distribution parameters from x 
30.0 
>>> x.std() 
3.0 
+0

Gahhh. Благодаря! Я думаю, что это будет сделано. Я знал, что должно быть что-то вроде этого, и я не мог его найти. – user2060108

+0

Думаю, я отредактировал свой комментарий. В конечном итоге я собираюсь использовать гамма-массив над возвращаемыми переменными, как если бы каждый раз, когда g1 был результатом, он будет работать как новый g1rand.rvs(). то же самое для g2 -> g2rand.rvs. Является ли это лучше достигнутым путем петли? – user2060108