rejection sampling
时间: 2023-04-22 14:06:00 浏览: 133
拒绝采样是一种概率采样方法,用于从一个分布中生成样本。它基于一个简单的原则,即如果一个样本在目标分布中的概率密度函数值小于一个常数乘以在提议分布中的概率密度函数值,则该样本被拒绝。这个常数通常被称为拒绝率,它的值越小,采样效率越高,但拒绝的样本也会越多。拒绝采样通常用于高维分布或复杂分布的采样。
相关问题
Return n points distributed over [xmin, xmax] x [ymin, ymax] according to (normalized) density distribution. with xmin, xmax = 0, density.shape[1] ymin, ymax = 0, density.shape[0] The algorithm here is a simple rejection sampling
# 根据密度分布返回分布在[xmin, xmax] x [ymin, ymax]上的n个点
# 其中xmin, xmax = 0, density.shape[1], ymin, ymax = 0, density.shape[0]
# 采用简单的拒绝抽样算法
def generate_points(density, n):
# 获取数组的行和列数
height, width = density.shape
# 归一化密度分布
density = normalize(density)
# 初始化points和count
points = np.zeros((n,2))
count = 0
# 采用拒绝抽样算法获取n个点
while count < n:
# 随机生成一个点的坐标
x, y = np.random.uniform(0, width), np.random.uniform(0, height)
# 判断该点是否被选中
if np.random.uniform(0,1) < density[int(y),int(x)]:
points[count,:] = (x,y)
count += 1
return points
阅读全文