如何在 nD 球中获得均匀分布的随机整数点?

7 python numpy

如何在 d 维球/球体内生成均匀的随机点?

在这个线程中,@Thomas Lux 有一个很好的解决方案,在半径 r=1 的 nD 球内生成均匀随机点。但现在我想生成笛卡尔坐标为整数的点。除了在立方体中生成随机点并丢弃范数大于 1 的点之外,我不知道任何方法。

我不知道简单地使用randint或推np.floor()送到向量是否可行。

Kar*_*elė 1

简单地使用round()统一的真实样本几乎就可以了。除了靠近球边缘的整数点出现的概率较低。这是因为边缘上的点的超立方体邻域不到您采样的球的一半。

不过,有一个简单的解决方法。在完全包含所有此类超立方体的球中生成真实样本,半径r+sqrt(n)/2应该足够,然后应用舍入,最后丢弃不在 distance 内的整数点r

当然,外球可以比内球大得多,具体取决于rn,但丢弃率仍然应该更好。