Geometry 围绕随机选择点的圆表面上点的均匀分布

Geometry 围绕随机选择点的圆表面上点的均匀分布,geometry,distribution,uniform,Geometry,Distribution,Uniform,在蒙特卡罗模拟中,我遇到了以下问题:给定一个单位向量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).但是

在蒙特卡罗模拟中,我遇到了以下问题:给定一个单位向量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方法是否可以修改,以便选择点附近的点


提前感谢您的建议。

Stack Overflow是一个提供编程相关问题的网站。您的编程问题是什么?可能是给您的。我在这里问这个问题是因为我需要计算效率最高的算法。但是,您是对的,这是一个几何问题,math.stackexchange.com可能更合适。