2009-10-30 101 views
0

如何隨機顯示屏幕對的順序? 例如我有3個元素存儲在列表中,例如A,B,C - >,它們成對的A-B,A-C,B-C。以隨機順序顯示屏幕對

如何以隨機順序顯示對子? 例如 A-B,A-C,B-C B-C,A-B,A-C A-C,A-B,B-C

ArrayList<String> s = new ArrayList<String>(); 
    s.add("A"); 
    s.add("B"); 
    s.add("C"); 

ListGenerator lg = new ListGenerator(s); 

另一類

public class ListGenerator { 

    private ArrayList<String> pairsX= new ArrayList<String>(); 

    public ListGenerator(ArrayList<String> list) { 
    int size = list.size(); 
    int count_pairs = 0; 

    // create a list of all possible combinations 
    for(int i = 0 ; i < size ; i++) 
    { 
     String s1 = ""+i; 
     for(int j = (i+1) ; j < size ; j++) 
     { 
      count_pairs++; 
      String s2 = ""+j; 
      pairsX.add(s1+","+s2); 
     } 
    } 

    System.out.println("numPairs "+count_pairs); 
    for(String s : pairsX) { 
     System.out.println(s); 
    } 
    } 
+0

你真的應該題目與問題更接近你的主要目標。這不是關於生成對,而是關於隨機顯示數組的問題。在讀完@SingleShot的精彩單行線後,花了我一會兒才意識到他回答了你實際問到的問題。 – 2009-10-30 17:00:41

+0

我很抱歉,我忘了更改我的問題的標題。是的,單杆是輝煌的:-) – Jessy 2009-10-30 17:13:38

回答

6
Collections.shuffle(pairsX); 
+0

我期待着看你的答案是否是整齊的小內襯,正如我希望得到你的名字一樣。好吧。做得很好。 – 2009-10-30 17:08:23

+0

謝謝,SingleShot。我忘了,我之前使用過collections.suffle,但那是單數。謝謝:-) – Jessy 2009-10-30 17:12:01

+1

哈哈。我的名字來自我的在線第一人稱射擊日:-) – SingleShot 2009-10-30 17:12:46

0

我只是爲您提供的僞代碼。假設你在列表中有三個項目。

  1. I = 0生成之間則爲list.size()的隨機數-1
  2. J =類似地生成另一個隨機數。
  3. 然後打印 list.get(ⅰ)+「 - 」 + list.get(J)

可以在一個循環中執行此操作,並添加條件,以驗證是否如此產生的一對是重複的一個。

我假設你知道如何產生的特定號碼之間的隨機數..

你可以這樣做(的Math.random()* 1000)%3