正如标题所说,如何在没有偏见的情况下随机选择地球表面上的坐标?做rand(-90,90),rand(-180,180)的简单解决方案将有利于赤道地区的极区。
答案 0 :(得分:7)
听起来你正在寻找uniform random distribution on a sphere。
在球坐标中:
θ = 2π * rand(0,1)
Φ = arccos(1 - 2*rand(0,1))
答案 1 :(得分:2)
所以,如果你在圆柱体的曲面上选择一个随机均匀分布的点(很容易,因为它与矩形等距),然后将该点水平投影回球体,你的分布将具有概率属性任何地区的一个点与该地区的面积成正比。
这意味着在范围(-pi,pi)中统一选择经度,并将纬度设置为arccos(y) - pi/2
,其中y均匀分布在范围(-1,1)中。
由于arccos
使用的任何浮点类型的精度(缺乏),您仍会有一个小的偏差。我不确定这是否会引人注意,但如果你想修复它,你可以使你的y值更接近+/- 1(实际上是通过在小数点后产生更多位)。或者更确切地说,将范围拆分为两个,生成接近0的额外位,然后使用准确的arccos_1_minus_x
函数。