给定 gunction float frand()
,生成均匀分布的随机浮点值,范围为 [0.0, 1.0)
如何创建均匀分布的随机 3D 单位向量和 4D 单位四元数?(因此 3D 矢量位于单位球体上,4D - 在单位超球面上,矢量均匀分布在对应的表面之间)
给定 gunction float frand()
,生成均匀分布的随机浮点值,范围为 [0.0, 1.0)
如何创建均匀分布的随机 3D 单位向量和 4D 单位四元数?(因此 3D 矢量位于单位球体上,4D - 在单位超球面上,矢量均匀分布在对应的表面之间)
您应该使用您的函数从高斯分布(均值 = 0,偏差 = 1)中选择向量的分量,frand()
然后对其进行归一化。
另一种更简单的方法是生成随机向量 (x, y, z...) 作为x = frand(); y = frand(); ...
并丢弃它(生成新的),如果它长于 1。然后规范化这个向量。这将消除扭曲分布的情况。然而,我觉得这种方法很难看,因为它是拉斯维加斯算法的不必要示例,它可能不会终止。
查看类似问题的答案:多维空间中的随机单位向量