我正在尝试运行一个模拟,其中我执行以下操作:
从 0 到 1 之间的均匀分布中随机抽取 2000 个样本
计算任何样本与其之前选择的样本之间的差异 du
使用该差异来计算 r=EXP(-a*du)
将另一个随机样本 z 与 r 的计算值进行比较
创建一个 r>z 的随机样本列表,并丢弃所有其他样本
重复这个过程,直到 2000 个样本被“接受”
这是我迄今为止所拥有的。当我运行此代码时,我收到错误消息“'numpy.float64' object has no attribute 'append'”。有关如何解决此问题的任何想法?
import numpy as np
import matplotlib.pyplot as plt
import math
NP=np.random.uniform(0,1,size=(2000,))
a=np.linspace(0.1,2,num=20)
for i in range(len(a)):
dr = []
du = []
for j in range(1999):
du=N[j+1]-N[j]
r=math.exp(-a[i]*du)
z=np.random.uniform(0,1)
if r>z:
du.append(N[j+1])
dr.append(r)
慕容森
慕村225694
相关分类