生成给定幅度的随机5d向量

时间:2012-09-25 21:21:25

标签: javascript math vector vector-graphics

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

我原本打算从单位矢量开始然后应用旋转矩阵,随机参数为10个自由度......这会起作用吗?怎么样?

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

欢呼任何指针!

5 个答案:

答案 0 :(得分:4)

以下是我将使用的蒙特卡罗算法(我不知道Javascript是否足以在我的脑海中编码):

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

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

  3. 将矢量标准化为幅度为1(将每个维度除以M)。

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


    有人提出这样的问题:“如果M> 1,为什么拒绝向量?”

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

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

    想象一下:就像普通的三维单位立方体和单位球,甚至单位正方形和单位圆一样,单位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立方体的表面与原点的距离更大< / em>比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-cube中包含所有的向量,那么你最终将“随机”映射到大约两倍(0.44,0.44, 0.44,0.44,0.44)而不是(1,0,0,0,0)。


    对于那些挑战(没有基础,恕我直言)这导致5-D球体表面均匀分布的人,请参阅维基百科文章:http://en.wikipedia.org/wiki/N-sphere#Alternatives

答案 1 :(得分:2)

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

但如果使用拒绝方案,则会丢失太多样本。也就是说,5-d中的单位超立方体的体积是pi ^ 2 *(8/15)= 5.26378901391432。将其与5个维度中仅包含球体的单位超立方体的体积进行比较。超立方体的体积为32.因此,如果您拒绝落在球体外的点,您将拒绝

1 - 5.26378901391432/32 = 0.835506593315178

或大约83.5%的积分被拒绝。这意味着在找到5球内的样本之前,您需要平均大约采样6个点。

更好的想法是使用单位正态样本进行采样,然后将该点矢量重新调整为具有单位范数。由于多变量正态分布是球对称的,因此根本不需要拒绝。

答案 2 :(得分:1)

以下是一些方法,它适用于单位向量,但您可以乘以M:

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

答案 3 :(得分:0)

我建议为每个元素分配介于-1和+1之间的随机数。一旦分配了矢量的所有元素,就应该对矢量进行标准化。要标准化,只需将每个元素除以整个向量的大小。完成后,你会得到一个幅度为1的随机向量。如果你想将向量缩放到M级,你只需要将每个元素乘以M.

答案 4 :(得分:-1)

不予拒绝拣货(快6倍)

来自Mathworlda link posted by Bitwise

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

Bitwise指出,应该乘以所需的幅度。

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

关于采用超球面排斥的均匀超立方体采摘(RBarryYoung的回答)

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

对我而言,这意味着每个轴上具有超球面排斥的均匀分布将无法在球体表面上实现均匀分布。