无重复的java随机生成器

无重复的java随机生成器,java,random,linked-list,generator,Java,Random,Linked List,Generator,我正在尝试使用随机生成器生成二维数组。基本上,每列都应该包含一个1-50之间的随机值,该值不会重复,但问题是,我无法在同一行或程序中的任何其他行或列上获得重复值。换句话说,每个I整数应该只显示一次。我的对象是通过链表创建的,一旦我弄明白了,我可能会在其中集成algorthim,但现在,我就是这么做的 int[] array = new int[50]; for(int i=1;i<=9;i++) { int[] grades = ne

我正在尝试使用随机生成器生成二维数组。基本上,每列都应该包含一个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);

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

以下是我要做的:


拿一个数字为1-50的数组列表,然后在列表上使用Collections.shuffle。

下面是我要做的:


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

您可以在接受数字之前检查数字是否唯一。例如,您可以尝试以下方法:

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;  
            }                    
    }
int count=0;
列表=新的ArrayList();

while(count您可以在接受之前检查号码是否唯一。例如,您可以尝试以下操作:

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;  
            }                    
    }
int count=0;
列表=新的ArrayList();

while(count)这是一个实用的解决方案,但是有没有一种方法可以使用Random()来实现呢生成器?我很确定我是被指示这样做的。@user2188838:当然,在这种情况下,按照vlad ardelean说的去做。Collections.shuffle确实使用随机生成器,顺便说一句。我今天晚些时候会给它一个机会,看看我是否可以用Collections来做。我在等待我的讲师的反馈,所以我的程序的命运取决于我的实现“我将使用。我将稍后更新此线程以显示我的结果。感谢您迄今为止的帮助。@user2188838还有一个可能对您有所帮助的是,
shuffle
的一个版本,它将
Random
作为输入。您可能想通知您的教授。不管他/她说什么,只要知道这可能是一个好消息。”如果你没有人为的限制,你可以实现这个答案。这是一个实际的解决方案,但是有没有一种方法可以使用Random()来实现呢生成器?我很确定我是被指示这样做的。@user2188838:当然,在这种情况下,按照vlad ardelean说的去做。Collections.shuffle确实使用随机生成器,顺便说一句。我今天晚些时候会给它一个机会,看看我是否可以用Collections来做。我在等待我的讲师的反馈,所以我的程序的命运取决于我的实现“我将使用。我将稍后更新此线程以显示我的结果。感谢您迄今为止的帮助。@user2188838还有一个可能对您有所帮助的是,
shuffle
的一个版本,它将
Random
作为输入。您可能想通知您的教授。不管他/她说什么,只要知道这可能是一个好消息。”如果你没有人为的限制,你可以实现这个答案。所以基本上,做一个数组列表,随机选择一个整数,检查这个整数是否已经被使用。然后增加每个值直到我达到50,对吗?是的,这基本上就是我建议的。任何集合都可以,我只是建议一个列表,因为它如前所述,我会使用你教授建议你存储结果的任何数据结构,如果需要的话(数据结构还没有)创建一个contains方法,返回一个布尔值来检查数字是否存在。数组列表实现我最终以每行的模式打印所有内容,因此我决定完全避免这种方式。我在网上偶然发现了这本指南,基本上,它假设生成数字并添加一个尚未就位的值。问题是这个实现的缺点是,尽管正确地遵循了所有操作,我还是会不断地得到符号错误(特别是随机变量和对象。我更喜欢这样做,因为它看起来更容易。所以基本上,制作一个数组列表,随机一个整数,检查这个整数是否已经被使用。然后增加每个值,直到我达到50,对吗?是的,这基本上就是我建议的。任何收集都可以,我只是说我会使用你教授建议你存储结果的任何数据结构,如果需要的话(数据结构还没有)创建一个contains方法,返回一个布尔值来检查数字是否存在。数组列表实现我最终以每行的模式打印所有内容,因此我决定完全避免这种方式。我在网上偶然发现了这本指南,基本上,它假设生成数字并添加一个尚未就位的值。问题是这个实现的缺点是,尽管正确地遵循了所有操作(特别是在随机变量和对象上),我还是会不断得到符号错误。我宁愿这样做,因为这样看起来更容易。