在蒙特卡罗模拟中,我遇到了以下问题:给定一个统一向量u在一个球体的表面上定义一个点A,我必须随机确定一个新的向量,在[0,max]中形成角度θ初始矢量。换句话说,我需要一种算法,该算法从均匀分布中随机选择球体内圆周内的一个点,该点在预定半径的中心位于初始点A。
我正在考虑使用欧拉角(θ,Ψ,φ)从(x,y,z)到(X,Y,Z)进行坐标旋转,使得Z = u。然后,从笛卡尔坐标到球坐标(r,θ,φ)的变换,其中u =(1,0,0)并均匀地选择cosθ和φ。最后,转换为(X,Y,Z),然后转换为(x,y,z)。但是,三角函数太慢了,还有更快的方法吗?
是否可以修改球体表面上均匀分布点的Marsaglia方法,以便选择点附近的点?
提前感谢任何建议。