2

我已经尝试过很多次搜索这些答案之一,但找不到我要找的东西。我确定这是相当基本的,我要么不知道如何用短语搜索我正在寻找的东西,要么以错误的方式进行。

使用 scipy 我想:

通过随机分布定义一个变量,并让它在每次调用时返回一个新值,例如:

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

最终目标是让这段代码(以及更多类似的代码)返回由数组 gamma 中每个位置的分布定义的 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
4

1 回答 1

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
于 2013-02-12T21:17:45.260 回答