2010-04-22 41 views
1

基本上我的問題是,我試圖編寫一個方法,在字符串圖中查找隨機路徑,因爲它的參數是起始字符串,一個整數長度和一個將存儲路徑的字符串矢量。我試圖這樣做,首先將起始字符串添加到我們的空白矢量,通過它的鄰居遞歸,直到矢量的長度(不包括起始節點)與參數中指定的整數長度相同。我提供了到目前爲止我的代碼在這裏:Java中的「for each」循環每次都以不同的順序運行

public Vector<String> findRandomPathFrom(String n, int len, Vector<String> randomPath){ 
    randomPath.add(n); 

    if (randomPath.size() == len + 1) 
     return randomPath; 

    for (String m : this.neighbours(n)){ 
     if (!randomPath.contains(m) && findRandomPathFrom(m, len, randomPath) != null) 
      return randomPath; 
    } 

    path.setSize(path.size() - 1); 
    return null; 

} 

這似乎是做工精細,用給定的字符串開始後指定的字符串數完全返回的路徑。但是,對於任何給定的起始字符串,它每次都會生成相同的EXACT路徑,這種方式會破壞它作爲隨機路徑生成器的目的。我猜這個問題與我的「for each」循環有關,循環遍歷當前字符串的所有相鄰字符串。它似乎只是每隔一段時間在鄰居矢量中的第一個字符串。任何人都可以幫助我解決這個問題,以便它會選擇一個隨機的鄰居而不是按順序?在Java中爲每個循環獲取「按照隨機順序處理集合」的任何方式,如對開始到finsih一樣?

感謝鄰居的名單上提前

回答

4

使用Collections.shuffle()迭代之前。

+0

非常感謝,我不明白我是怎麼錯過的,現在它每次都會產生一個隨機路徑 – 2010-04-22 11:32:07