1

给定一个单位向量n,我需要尽快生成另一个随机单位向量mmn的偏差应该在一个正参数量级上sigma,并且m在单位球面上的分布应该围绕n对称。

我对单位向量的表示没有具体要求,因此您可以使用球面角、笛卡尔坐标或任何方便的方法。此外,对所使用的概率分布没有精确的要求,只要它在msigma偏离n大于n 时衰减。

我正在使用gslC。我想出了一个使用笛卡尔坐标的有点复杂的方法。如果有用我会在稍后发布,但我想看看人们的想法。

4

2 回答 2

2

您可能知道,每个维度 均匀分布的向量会0产生一个立方体,其中更多的值集中在角落。但是每个维度正态分布的向量0要好得多。点的极角均匀分布在单位球面上,半径集中在原点附近。您可以生成这样的向量,根据您的参数更改标准偏差sigma。将向量添加到n,对结果进行归一化,并称之为好。

这需要 1 个平方根和 3 个正态分布的随机数。您可以使用Ziggurat 算法快速获得正态分布的随机数。更近似的选择是将 3 个或更多均匀分布的随机数相加。还有另一种可能性:预先计算一个包含许多随机向量的表,并使用随机索引进行表查找。这些方法中的每一种都以不同的方式平衡计算和存储,因此您应该将它们全部编码并测试速度。

于 2012-09-11T14:49:43.227 回答
1

为什么不简单地使用球极坐标。根据区间 [0,2*pi) 上的均匀分布生成方位角,并根据选择的某种指数衰减分布生成极角,以满足您的衰减要求。然后,您可以通过这些随机采样的极角和方位角生成m向量作为原始n向量的角位移。

于 2012-09-10T21:57:24.237 回答