遍历长度为“L”的所有向量

Iterate over all vectors of length `L`

本文关键字:向量 遍历      更新时间:2023-10-16

如何迭代具有指定长度(例如单位长度)的d维度的所有可能向量,其中delta是步长。


请注意,delta可以非常小,例如单位向量的1e-3d通常在[0,5]范围内,但这不是硬性限制!


愚蠢的方法是使用delta*i列表进行i in [0,N)并生成所有可能的组合,例如在 n 中选择 n 并选择那些总和为 1 的组合。但这似乎效率很低,我相信有我不知道的更好的方法。


镐至少应接近均匀分布在表面上。

好的,我想我想我想出了你需要什么。基本上,如果你选择

X=(X1, X2, ..., Xn)/norm(X)

其中X1, X2,..., Xn呈正态分布N(0,1)(平均值 0 和标准差 1),norm(X)是 L2(欧几里得)范数X,则保证向量X均匀分布在n维单位球面的表面上。

现在,既然你想离散化,只需从二项分布中绘制每个Xi(在极限下我们知道它成为泊松分布,通过中心极限定理,收敛到高斯分布,见 http://www.roe.ac.uk/japwww/teaching/astrostats/astrostats2012_part2.pdf),你就完成了。当然,你会在维度n中得到指数缩放,但我认为没有其他方法,因为此类向量的数量与维度呈指数级缩放。