在不使用SciPy的情况下从截断高斯分布中采样,可以通过以下步骤实现:
截断高斯分布是指在一个特定的区间内定义的高斯分布。通常,这个区间可以是有限的,例如 [a, b],其中 a 和 b 是区间的下限和上限。
截断高斯分布可以是单边截断(例如,只截断负值或正值)或双边截断(同时截断上下限)。
以下是一个使用Python实现从截断高斯分布中采样的示例代码:
import random
import math
def truncated_gaussian_sampler(mu, sigma, a, b, n):
"""
从截断高斯分布中采样
:param mu: 高斯分布的均值
:param sigma: 高斯分布的标准差
:param a: 截断区间的下限
:param b: 截断区间的上限
:param n: 采样数量
:return: 采样结果列表
"""
samples = []
while len(samples) < n:
x = random.gauss(mu, sigma)
if a <= x <= b:
samples.append(x)
return samples
# 示例使用
mu = 0 # 均值
sigma = 1 # 标准差
a = -1 # 截断下限
b = 1 # 截断上限
n = 1000 # 采样数量
samples = truncated_gaussian_sampler(mu, sigma, a, b, n)
print(samples[:10]) # 打印前10个样本
对于大规模采样需求,可以考虑使用更高级的算法,例如:
通过这些方法,可以在不依赖SciPy的情况下高效地从截断高斯分布中采样。
领取专属 10元无门槛券
手把手带您无忧上云