gpt4 book ai didi

Python:如何修复绘制的 "random"值函数调用是否一致?

转载 作者:太空宇宙 更新时间:2023-11-03 14:03:55 24 4
gpt4 key购买 nike

我有:

np.random.seed(123)
var_v = 0.007 ** 2
T = 100
rho = 0.9

def v_t(var_v, T):
v_t_ = np.zeros([T,1])
v_t_[1:T] = (var_v ** 0.5) * np.random.randn(len(v_t_) - 1, 1)
return v_t_

def s_t(rho, T):
v_t_ = v_t(var_v, T)
s_t_ = np.zeros([T,1])
s_t_[0] = 0
for t in range(1,T):
s_t_[t] = rho *s_t_[t-1] + v_t_[t]
return s_t_

但是每次我调用其中一个值时,即

s_t(rho, T) “或”v_t(var_v, T)

显示正确的值。但之后,当我调用另一个值时,该值是错误的。清除命名空间后,当我调用镜像序列中的函数时,也是如此。

我怀疑这是因为新值是由np.random.randn绘制的。如何轻松修复绘制的值我通过调用 s_tv_t 获得了正确的值?

最佳答案

如果要确保一致性,则需要在每次抽取随机数时设置种子。下面的小例子将说明:

np.random.seed(123)
np.random.randn(4, 1)
np.random.randn(4, 1)

输出不同:

array([[-1.0856306 ],
[ 0.99734545],
[ 0.2829785 ],
[-1.50629471]])

array([[-0.57860025],
[ 1.65143654],
[-2.42667924],
[-0.42891263]])

然后尝试:

np.random.seed(123)
np.random.randn(4, 1)
np.random.seed(123)
np.random.randn(4, 1)

输出是相同的:

array([[-1.0856306 ],
[ 0.99734545],
[ 0.2829785 ],
[-1.50629471]])

array([[-1.0856306 ],
[ 0.99734545],
[ 0.2829785 ],
[-1.50629471]])

因此,在您的情况下,您只需在每次调用 np.random.randn 之前在函数内设置种子即可。

关于Python:如何修复绘制的 "random"值函数调用是否一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49048537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com