2017-09-14 9 views
1

地球儀上のランダムな点を返す関数を作成しようとしています。私は次のコードを試してみると、ポールで点数を増やし、赤道では点数を減らすことになります。JavaScript:地球儀上のランダムな位置を取得する

function random_location() { 
    return { 
    lon: Math.floor(Math.random() * 360) - 179, 
    lat: Math.floor(Math.random() * 181) - 90 
    } 
} 

for (var i = 0; i < 100; i++) { 
    var location = random_location(); 
    // do something 
} 

どうすればよいですか?

注:この点は地球の大きさの球であるかもしれませんが、それ以外のサイズでも構いません。私はちょうどランダムに分布された緯度と経度を作成する必要があります。 http://mathworld.wolfram.com/SpherePointPicking.htmlから

+0

はランダムではない "_randomly均等にdistributed_"。参考:https://stackoverflow.com/questions/5715826/evenly-distributed-random-numbers – Teemu

+0

@Teemuコンピュータがランダムに数字を選び、均等に分散されていることを意味します。つまり、球。 – MakPo

答えて

0

function random_location() { 
    return { 
    lon: Math.floor(Math.random()*360) - 180, 
    lat: Math.round(Math.acos(2*Math.random() - 1)*180/Math.PI) - 90 
    } 
} 
関連する問題