java随机生成器无需重复

时间:2013-04-29 17:39:12

标签: java random linked-list generator

我试图使用随机生成器生成2d数组。基本上,每列应包含一个介于1-50之间的随机值,但不会重复,但问题是,我无法在同一行或程序中的任何其他行或列上获得重复值。换句话说,每个I整数应该只显示一次。我的对象是通过链表创建的,一旦我弄明白,我可能会将algorthim整合到那里,但就目前来说,这是我所做的。

int[] array = new int[50];



        for(int i=1;i<=9;i++)
        {

        int[] grades = new int[5];
            for(int j=0;j<=4;j++)
            {

            int unique = gen.nextInt(50)+1;


            grades[j] = unique; 
            }
            list.add(new Student(i, grades));

        }

        System.out.println(list);

我的输出:

Student1: 20 49 45 16 13 
Student2: 28 10 11 30 6 
Student3: 13 25 37 31 49 
Student4: 8 23 8 12 32 
Student5: 22 18 35 2 7 
Student6: 35 8 16 23 36 
Student7: 35 3 15 42 2 
Student8: 43 12 44 2 35 
Student9: 12 21 36 23 12 

所以我的问题是这个。如何在不重复值的情况下实现随机gen。通常我现在会尝试一个集合列表,但我正在尝试使用java.util.Random这样做。就个人而言,我会以不同的方式做到这一点,但我已经指示了。谢谢

2 个答案:

答案 0 :(得分:6)

这就是我要做的事情:

获取数字1-50的ArrayList,然后在列表中使用Collections.shuffle。

答案 1 :(得分:0)

您可以在接受之前检查该号码是否唯一。例如,您可以尝试以下内容:

int count=0;
List<Integer> list=new ArrayList<Integer>();
    while(count<50){
        int num=random.nextInt(50);
            if(!list.contains(num)){
                list.add(num);
                ++count;  
            }                    
    }