2013-02-25 88 views

回答

1

你可以嘗試一些想我的第一點beging如下所示,這使用HashMap創建唯一和隨機數字:

public void getRandomPosistions(int endPoint, int total) 
{ 
    Set<Point> set = new HashSet<Point>(); 
    Random position = new Random(); 
    Point point; 

    Point usedPos = new Point(); 
    // Starting Position 
    usedPos.x = 100; 
    usedPos.y = 100; 
    set.add(usedPos); 

    do 
    { 
     point = new Point(); 
     point.x=position.nextInt(endPoint); 
     point.y=position.nextInt(endPoint); 
     set.add(point); 
    } 
    while(set.size() < (total)); 

    List<Object> positionList = new ArrayList<Object>(set); 
} 
+0

所有這一切正在產生一堆隨機點(值從0到2^32),絕對不是什麼問題要求。 – Delyan 2013-02-25 10:38:22

+0

是的,但是您可以添加動態整數,以便您的起點和終點在正確的點之間獲得一個隨機數。例如,終點可以是500 + startPoint等。以上是實施的粗略邏輯。 – 2013-02-25 11:08:15

0

這很簡單。

  1. 獲取緯度和經度的最大值和最小值。
  2. 生成經度的隨機值(使用均勻分佈)。
  3. 生成隨機緯度值(可以使用均勻分佈或考慮地球的形狀)。
  4. 檢查隨機點是否在多邊形內,如果不是,則再試一次。