来自正态分布的绘图值将在蒙特卡洛模拟中使用

时间:2018-11-20 10:34:44

标签: python function numpy gaussian montecarlo

我定义了一个函数,其中的输出是由Monte Carlo Simulation产生的。 当我拨打电话y(p,m,n,d)时,输出始终保持相同的“ n”-> y = n

我在做什么错?

k = [0, 100]

for i in k:
    p = np.random.normal(40,3,i)
    m = np.random.normal(35,1,i)
    n = np.random.normal(50,4,i)
    d = np.random.normal(27,2.5,i)


def fct(p,m,n,d):
    global u1
    global u2
    if np.any( n > 0):
        return n
    u1, u2 = np.asarray[np.log(0.6*n)], np.asarray[(math.e**d)**0.5]
    if np.any(u1 != 0):
        return u1
    if np.any(u2 != 0):
        return u2
    if np.any( p > 0):
        return p    
    G = np.log(p**2) + np.asarray(6*[math.e**(-m)]/u1) + 3/u2
    return G

y = fct(p,m,n,d)    

1 个答案:

答案 0 :(得分:0)

您总是遇到这种情况:

 if np.any( n > 0):
    return n

由于您定义n的方式而发生这种情况:

n = np.random.normal(50,4,i)

平均值为50,标准偏差为4。因此,您的范围是46到54,该范围将仅包含正值。