Algorithm 如何在地球表面随机选择一个点?

Algorithm 如何在地球表面随机选择一个点?,algorithm,geolocation,Algorithm,Geolocation,正如标题所说,如何在没有偏差的情况下随机选择地球表面的坐标?使用兰德(-90,90)、兰德(-180180)的简单解决方案将有利于极地地区而非赤道地区。听起来你在寻找一个新的选择 在球坐标中: θ = 2π * rand(0,1) Φ = arccos(1 - 2*rand(0,1)) 阿基米德证明了一个巧妙的定理,即球体上某个区域的面积等于该区域在外切圆柱的曲面上的水平投影面积(因此,整个球体的面积等于外切圆柱的整个曲面的面积)。你可以通过画一些小的“矩形”(以经纬线为界)来证明这一点,然

正如标题所说,如何在没有偏差的情况下随机选择地球表面的坐标?使用兰德(-90,90)、兰德(-180180)的简单解决方案将有利于极地地区而非赤道地区。

听起来你在寻找一个新的选择

在球坐标中:

θ = 2π * rand(0,1)
Φ = arccos(1 - 2*rand(0,1))

阿基米德证明了一个巧妙的定理,即球体上某个区域的面积等于该区域在外切圆柱的曲面上的水平投影面积(因此,整个球体的面积等于外切圆柱的整个曲面的面积)。你可以通过画一些小的“矩形”(以经纬线为界)来证明这一点,然后(非正式地)观察到,在极限处,所有东西都是用足够小的矩形来近似的,或者更正式地说,一个区域的面积被定义为某个整数,即(感谢勒贝格)一系列矩形和的极限

因此,如果在圆柱体的曲面上选择一个随机均匀分布的点(很容易,因为它与矩形等距),然后将该点水平投影回球体上,则分布将具有以下特性:点位于任何区域的概率与该区域的面积成正比

这意味着在范围(-pi,pi)内均匀选择经度,并将纬度设置为
arccos(y)-pi/2
,其中y在范围(-1,1)内均匀分布


由于在
arccos
中使用的任何浮点类型(缺乏)精度,您仍然会有一个小偏差。我不确定这是否会很明显,但如果是这样的话,如果您想解决这个问题,您可以使y值更精确地接近+/-1(实际上是在小数点后生成更多位)。或者,将范围分成两部分,生成接近0的额外位,然后使用精确的
arccos_1_减_x
函数。

您尝试过搜索吗?搜索“球体上的随机点”会为我带来大量结果…可能重复,那么我认为算法会是这样的吗?经度=2*PI*rand(0,1)纬度=arccos(1-2*rand(0,1))