我已经尝试过搜索其中一个答案了,找不到我要找的东西。我确定它是相当基本的,我要么不知道如何用短语搜索我正在寻找的东西,我会以错误的方式进行。
使用scipy我想要:
通过随机分布定义变量,并在每次调用时返回一个新值,例如:
x = np.random.normal(30,30/10)
x = #random number
x = #new random number
最终目标是获得这些代码(以及更多类似代码)来返回g1和g2数字的随机变量,这些数字由数组gamma中每个位置的分布定义。我很乐意在g1rand和g2rand中查找随机值,如果可行的话,但是我还没有弄清楚如何使用循环填充gamma数组。最终的目标是运行代码的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 :(得分: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