gpt4 book ai didi

c - 在单位球体上产生随机位移

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:25 25 4
gpt4 key购买 nike

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

我对单位 vector 的表示没有具体要求,因此您可以使用球面角、笛卡尔坐标或任何方便的表示方式。此外,对使用的概率分布没有精确的要求,只要它在 m 偏离 n 超过 sigma 时衰减即可。

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

最佳答案

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

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

关于c - 在单位球体上产生随机位移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com