【发布时间】:2018-12-01 17:17:30
【问题描述】:
我试图获得一个离散接近 n >= 2 的高斯分布。
假设如果 n = 2,那么离散接近度将是 [0.5, 0.5]。
当 n = 3 时,它将是 [0.25, 0.5, 0.25]
当 n = 4 时,它将是 [0.125, 0.375, 0.375, 0.125]
我希望你明白我的意思。
返回的离散邻近数组总和应始终为 1,因为所有分布。
这是我的代码:
import numpy as np
import matplotlib.pyplot as plt
import math
import scipy
from random import randint
def discrete_gauss(n):
g = [0.5, 0.5]
f = g
for x in range(1, n - 1):
f = np.convolve(f,g)
if(sum(f) != 1):
print("The distribution sum is not 1.")
else:
return f
现在“discrete_gauss”在我使用 (1 67) 时,f 的总和不同于 1(有时更多有时更少),我不知道为什么. 有人知道吗?
抱歉,我试图简短地回答这个凌乱的问题。如果不清楚,我会很乐意澄清。 谢谢。
【问题讨论】:
-
你打印总和了吗?当我用大 n 运行你的代码时,我得到一个像
0.9999999999999999这样的总和,这表明你的问题只是一个浮点精度问题。 -
@MarkMeyer 是的,这是某种精度问题,但我不知道它在哪里以及为什么只在 n > 67 时发生。
-
什么是“离散邻近”?您的意思是要将连续高斯分布近似为具有
n点的离散分布?
标签: python numpy convolution gaussian