我试图通过取多个随机案例的平均值来验证各种 3-D 和 2-D 结构中两点之间的平均距离。几乎一直以来,除了球体表面上的点外,我都获得了相当不错的准确度。我的代码使用受此答案启发的高斯分布(请参阅第二个投票最多的答案)
这是蟒蛇代码:
import math as m
from random import uniform as u
sum = 0
for i in range(10000):
x1 = u(-1, 1)
y1 = u(-1, 1)
x2 = u(-1, 1)
y2 = u(-1, 1)
z1 = u(-1, 1)
z2 = u(-1, 1)
if x1 == y1 == z1 == 0:
sum += m.sqrt((x2) ** 2 + (y2) ** 2 + (z2) ** 2)
elif x2 == y2 == z2 == 0:
sum += m.sqrt((x1) ** 2 + (y1) ** 2 + (z1) ** 2)
else:
x1 /= m.sqrt(x1 ** 2 + y1 ** 2 + z1 ** 2)
y1 /= m.sqrt(x1 ** 2 + y1 ** 2 + z1 ** 2)
z1 /= m.sqrt(x1 ** 2 + y1 ** 2 + z1 ** 2)
x2 /= m.sqrt(x2 ** 2 + y2 ** 2 + z2 ** 2)
y2 /= m.sqrt(x2 ** 2 + y2 ** 2 + z2 ** 2)
z2 /= m.sqrt(x2 ** 2 + y2 ** 2 + z2 ** 2)
sum += m.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2 + (z1-z2) ** 2)
print(sum/10000)
预期值为 4/3,此处显示
可以说绝对差别不是很大。但在任何运行中,与预期值的百分比偏差都在 1% 左右。另一方面,在具有其他形状和相同数量随机案例的所有其他类似程序中,百分比偏差平均约为 0.05%。
此外,代码返回的值始终小于 4/3。这是我最关心的问题。
我的猜测是我以错误的方式实现了算法。任何帮助表示赞赏。
繁星点点滴滴
HUH函数
相关分类