2

给定一个五维空间,我想生成 100 个向量,所有向量都具有固定的大小 = M,其中分量值是随机分布的。

我最初想从一个单位向量开始,然后应用一个旋转矩阵,带有 10 个自由度的随机参数......这行得通吗?如何?

在 Javascript 中执行此操作的任何好方法...?

为任何指点欢呼!

4

5 回答 5

6

这是我将使用的蒙特卡洛算法(我对 Javascript 的了解不够好,无法在脑海中编写代码):

  1. 为五个维度中的每一个维度生成 -1 到 1 范围内的随机值。

  2. 计算幅度 M,如果 M=0 或 M>1,则拒绝这些值并返回步骤 #1。

  3. 将向量归一化,使其大小为 1(每个维度除以 M)。

这应该为您提供均匀分布在 5 维超球面上的随机单位向量。


有人问过这个问题:“如果 M>1,为什么要拒​​绝该向量?”

答案:这样最终的向量将均匀分布在单位 5 球体的表面上。

推理: 我们在第一步中生成的是一组随机向量,这些向量均匀分布在单位 5 立方的体积内。其中一些向量也在单位 5 球体的体积内,其中一些在该体积之外。如果归一化,则 5 球内的向量均匀分布在其表面上,然而,其外部的向量则根本不均匀分布。

可以这样想:就像普通的 3 维单位立方体和单位球体,甚至单位正方形和单位圆一样,单位 5 球体完全包含在单位 5 立方体中,它只触及五个正单位尺寸轴点:

(1,0,0,0,0)
(0,1,0,0,0)
(0,0,1,0,0)
(0,0,0,1,0)
(0,0,0,0,1)

及其对应的负单位轴点。这是因为这些是立方体表面上唯一大小(与原点的距离)为 1 的点,在所有其他点上,5 立方体的表面与原点的距离大于1。

这意味着(0,0,0,0,0)和(1,1,1,1,1)之间的点比(0,0,0,0,0)和( 1,0,0,0,0)。事实上关于 SQRT(5) 或 aprx。2.25倍以上。

这意味着,如果您将所有向量包含在单位 5 立方中,则“随机”映射到 (0.44,0.44,0.44,0.44,0.44) 的结果将是 (1) 的两倍多,0,0,0,0)。


对于那些挑战(没有基础,恕我直言)这会导致 5-D 球体表面均匀分布的人,请参阅此 Wikipedia 文章部分中的替代方法:https ://en.wikipedia.org/wiki /N-sphere#Uniformly_at_random_on_the_(n_%E2%88%92_1)-sphere

于 2012-09-25T21:30:07.000 回答
2

从 5 维的单位超立方体采样然后重新缩放的问题是某些方向上的点(朝向超立方体的角)将被过度采样。

但是如果你使用拒绝方案,那么你会丢失太多的样本。即一个单位超立方体在5-d的体积是pi^2*(8/15) = 5.26378901391432。将其与仅包含球体的 5 维单位超立方体的体积进行比较。那个超立方体的体积是 32。所以如果你拒绝落在球体之外的点,你就会拒绝

1 - 5.26378901391432/32 = 0.835506593315178

或大约 83.5% 的分数被拒绝。这意味着您需要平均采样大约 6 个点,然后才能找到 5 球内的样本。

一个更好的想法是使用单位正态样本进行采样,然后重新缩放该点向量以具有单位范数。由于多元正态分布是球对称的,所以根本不需要拒绝。

于 2012-09-25T23:35:32.763 回答
1

这里有一些方法,它适用于单位向量,但你可以乘以 M:

http://burtleburtle.net/bob/rand/unitvec.html

于 2012-09-25T21:41:47.403 回答
0

我建议为每个元素分配 -1 和 +1 之间的随机数。一旦分配了向量的所有元素,就应该对向量进行归一化。要标准化,只需将每个元素除以整个向量的大小即可。完成此操作后,您将得到一个大小为 1 的随机向量。如果要将向量缩放到大小 M,只需将每个元素乘以 M。

于 2012-09-25T21:26:11.140 回答
0

无拒绝拣货(快 6 倍)

来自MathworldBitwise 发布的链接

如果您选择 n 个具有正态分布的数字,将它们视为坐标,并将结果向量归一化为单位向量,这将选择 n 维中均匀分布的单位向量。
- Burtleburtle (ht 按位)

正如 Bitwise 指出的那样,这应该乘以所需的幅度。

注意这里没有拒绝步骤;分布本身已经处理了向零的必要偏差。由于正态分布和半圆不是同一个形状,我想知道 RBarryYoung 的答案是否真的给出了球体表面的均匀分布。

关于具有超球面排斥的均匀超立方体拾取(RBarryYoung 的回答)

Mathworld 文章描述了使用从均匀分布中挑选的 4 个随机数来计算 3d 球体表面上的随机向量。它对单位超球面之外的任何随机数的 4d 向量执行拒绝,就像 RBarryYoung 所做的那样,但不同之处在于它 (a) 使用额外的随机数和 (b) 对要提取的数字执行非线性变换3d 单位向量。

对我来说,这意味着具有超球面排斥的每个轴上的均匀分布不会在球体表面上实现均匀分布。

于 2012-09-27T16:25:33.047 回答