2009-10-30 100 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