簡體   English   中英

如何使用高斯分布在道路網絡地圖中創建距離,最好在 Java 中模擬真實世界場景?

[英]How to use Gaussian distribution to create distance in a road network map that will simulate real world scenario preferably in Java?

我的道路網絡數據集由邊和節點組成。 我主要使用具有(edge_id,start_node,end_node,edge_length)的邊。 為了模擬真實世界的場景,我需要在地圖上生成隨機道路對象,即興趣點 (POI)。 POI 將具有類似 (Object_id, edge_id, distance_from_start_node,edge_type[boolean]) 的屬性。 現在為了生成符合高斯分布的 10k 個道路對象,我從整個邊數據集中隨機選擇一條邊,需要遍歷 10k 次來生成這些道路對象,每次選擇高斯距離值。 當我將平均值設置為零“0”時,我不知道應該在那里使用什么標准偏差大小? 由於數據集的 edge_length,我不能只使用任意標准偏差值。 有人可以幫助我如何生成遵循高斯分布的隨機雙精度值嗎?

如您所知, Random.nextGaussian從正態分布中生成一個均值為 0 且標准差為 1 的隨機數。

這意味着您將從該生成器中產生大量負數。 負數在您的應用程序中可能沒有意義。 所以你應該計划避免它們。

為什么不嘗試這樣的事情來獲取您的隨機數(未調試)

public static float nextDistance () {
  final double meanlength = 10.0;
  final double meanstdev  = 5.0;
  while (true) {
    double result = meanLength + (meanstdev * rnd.nextGaussian())
    if (result >= 0) return result;
  }

這將返回一個正距離值,平均值為 10,標准差為 ±5。 如果作為偏移和縮放的高斯查找結果為負,則此函數只會再次嘗試。 丟棄樣本會稍微破壞您的隨機性。 但是對於測試數據,它可能沒問題。

不過,我想知道您的應用程序是否應該使用泊松分布而不是高斯分布? 這可能比高斯分布更好地描述邊緣長度的分布。 您也可以生成泊松隨機數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM