Python 打印不提供任何输出

Python 打印不提供任何输出,python,mcmc,Python,Mcmc,我编写了一个代码来执行一些Metropolis Hastings MCMC,当我要求它打印结果列表时,什么都没有发生,甚至没有错误消息。有人知道我为什么没有得到任何输出吗 def Gaussian(sigma, x, mu): p = 1/(sigma*np.sqrt(2*np.pi))*np.exp(-(x-mu)**2/(2*sigma**2)) return p N = 10 i = 0 x[0] = 0.5 results = [] for i in range (0

我编写了一个代码来执行一些Metropolis Hastings MCMC,当我要求它打印结果列表时,什么都没有发生,甚至没有错误消息。有人知道我为什么没有得到任何输出吗

def Gaussian(sigma, x, mu):
    p = 1/(sigma*np.sqrt(2*np.pi))*np.exp(-(x-mu)**2/(2*sigma**2))
    return p

N = 10
i = 0
x[0] = 0.5
results = []

for i in range (0,N):
    y = x[i] + np.random.normal(0,0.01)
    H = Gaussian(1,y,1)/Gaussian(1,x[i],1)
    alpha = np.random.uniform(1,1)
    if H >= alpha:
        x[i+1]=y
        results.append(y)

print(results)

您不能启动python列表,因为x[0]=0.5

如果您想要硬核x[0]=0.5,那么将其用作x=[0.5]


希望这对你有用

我得到
名称错误:名称“x”未定义
。有效!但是现在它给了我一个错误,列表索引赋值超出了if语句中设置x[I+1]=yYes的步骤的范围,当然它给了你这个错误,因为名为x的列表的长度是一,但是你试图读取索引1的值,而这个值不存在。在这里做一个循环,例如范围(0,N)中的i:并在列表中附加值。像x.append(你的价值观)太棒了,谢谢!最后一个问题。它在一段时间内工作,并给出我想要的列表,但在其他时间,如果我再次运行它,它会告诉我列表索引超出了y=x[I]+np.random.normal(0,0.01)的范围。为什么它有时会起作用,而其他时候则不起作用呢?将numpy作为np def gaussigma(sigma,x,mu)导入:p=1/(sigma*np.sqrt(2*np.pi))*np.exp(-(x-mu)**2/(2*sigma**2))返回pn=10x=[]对于范围(0,N)中的i:x.append(0.5)结果=[]对于范围(0,N)中的i:y=x[i]+np.random.normal.normal(0,0.01)H=Gaussian(1,y,1)/Gaussian(1,x[i],1)alpha=np.random.uniform(1,1)#打印x[i]如果H>=alpha:x.append(y)results.append(y)print(results)阅读此代码片段,将适用于您