Javascript 生成给定大小的随机5d矢量

Javascript 生成给定大小的随机5d矢量,javascript,math,vector,vector-graphics,Javascript,Math,Vector,Vector Graphics,给定一个五维空间,我想生成100个向量,所有向量的大小都是固定的=M,其中分量值是随机分布的 我最初的想法是从一个单位向量开始,然后应用一个旋转矩阵,用10个自由度的随机参数。。。这样行吗?怎么做 用Javascript做这件事有什么好方法吗 为任何指点干杯 我建议为每个元素分配介于-1和+1之间的随机数。一旦一个向量的所有元素都被指定,那么你应该规范化这个向量。要进行规格化,只需将每个元素除以整个向量的大小即可。一旦你这样做了,你就得到了一个大小为1的随机向量。如果要将向量缩放到M量级,只需将

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

我最初的想法是从一个单位向量开始,然后应用一个旋转矩阵,用10个自由度的随机参数。。。这样行吗?怎么做

用Javascript做这件事有什么好方法吗


为任何指点干杯

我建议为每个元素分配介于-1和+1之间的随机数。一旦一个向量的所有元素都被指定,那么你应该规范化这个向量。要进行规格化,只需将每个元素除以整个向量的大小即可。一旦你这样做了,你就得到了一个大小为1的随机向量。如果要将向量缩放到M量级,只需将每个元素乘以M。

我建议为每个元素指定-1到+1之间的随机数。一旦一个向量的所有元素都被指定,那么你应该规范化这个向量。要进行规格化,只需将每个元素除以整个向量的大小即可。一旦你这样做了,你就得到了一个大小为1的随机向量。如果要将向量缩放到M量级,只需将每个元素乘以M即可。

这里是我将使用的蒙特卡罗算法(我对Javascript不太了解,无法从头开始编写):

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

  • 计算震级M,如果M=0或M>1,则拒绝这些值并返回步骤#1

  • 对向量进行规格化,使其大小为1(将每个维度除以M)

  • 这会给你随机单位向量,均匀分布在5维超球面上


    有人问:“如果M>1,为什么要拒绝向量?”

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

    推理:我们在第一步中生成的是一组随机向量,它们均匀分布在单位5-立方体的体积内。其中一些向量也在单位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立方体曲面与原点的距离大于1

    这意味着(0,0,0,0,0)和(1,1,1,1,1)之间的点比(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)



    对于那些挑战(没有基础,不需要)的人来说,这会导致5D球面上的均匀分布,请参阅本维基百科文章部分中的另一种方法:

    < P>这是我要使用的蒙特卡洛算法(我不知道JavaScript足够好,在我的头上编码):

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

  • 计算震级M,如果M=0或M>1,则拒绝这些值并返回步骤#1

  • 对向量进行规格化,使其大小为1(将每个维度除以M)

  • 这会给你随机单位向量,均匀分布在5维超球面上


    有人问:“如果M>1,为什么要拒绝向量?”

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

    推理:我们在第一步中生成的是一组随机向量,它们均匀分布在单位5-立方体的体积内。其中一些向量也在单位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立方体曲面与原点的距离大于1

    这意味着(0,0,0,0,0)和(1,1,1,1,1)之间的点比(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)


    对于那些有挑战性的人(没有基础的,IMHO),这会导致一个均匀的分布。