Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅使用random而不使用ArrayList写入无重复的随机数_Java_Arrays_Loops_Random_Numbers - Fatal编程技术网

Java 仅使用random而不使用ArrayList写入无重复的随机数

Java 仅使用random而不使用ArrayList写入无重复的随机数,java,arrays,loops,random,numbers,Java,Arrays,Loops,Random,Numbers,我有一个问题,写更清晰的程序,随机数没有重复。我的代码可以工作,但不是很好 我尝试了很多想法,尤其是我只是玩了一些循环 for(int i=1; i<=pole.length;i++){ while(p<=13){ i=rd.nextInt(13)+1; if(pole[i]==i){ } else{ System.out.println`(i+"-"+p); pole[i]=i;

我有一个问题,写更清晰的程序,随机数没有重复。我的代码可以工作,但不是很好

我尝试了很多想法,尤其是我只是玩了一些循环

for(int i=1; i<=pole.length;i++){

   while(p<=13){
     i=rd.nextInt(13)+1;
     if(pole[i]==i){    
     }
     else{
        System.out.println`(i+"-"+p);
        pole[i]=i;
        p++;
        if(i>Max){
          Max=i;
        }
    }
  i=Max;
}

for(inti=1;i我试图解决您的问题
第一条路:

        Integer[] arr = new Integer[13];
        int i = 0;
        for (;;) {
            if (i == 13) {
                break;
            }
            int random = (int) (Math.random() * 100);

            if (!Arrays.asList(arr).contains(random)) {
                arr[i] = random;
                i++;
            }
        }
第二种方式:

  List<Integer> list = new ArrayList<>(); 
     while (list.size()<13) {  
        Integer random = (int )(Math.random() * 100);
        if(!list.contains(random)){
            list.add(random);
        }
    }
List List=new ArrayList();

而(list.size()我试图解决您的问题
第一条路:

        Integer[] arr = new Integer[13];
        int i = 0;
        for (;;) {
            if (i == 13) {
                break;
            }
            int random = (int) (Math.random() * 100);

            if (!Arrays.asList(arr).contains(random)) {
                arr[i] = random;
                i++;
            }
        }
第二种方式:

  List<Integer> list = new ArrayList<>(); 
     while (list.size()<13) {  
        Integer random = (int )(Math.random() * 100);
        if(!list.contains(random)){
            list.add(random);
        }
    }
List List=new ArrayList();

而(list.size()如果出于某种原因不想使用Collections.shuffle(),也可以使用Set实现同样的效果

  Set<Integer> set = new LinkedHashSet<>();
  while (set.size() < 13)
    set.add((int) (Math.random() * 101));
Set Set=newlinkedhashset();
while(set.size()<13)
set.add((int)(Math.random()*101));

请记住,您还必须检查随机数范围是否远大于设置的大小(在上面的示例中,您需要确保101始终大于所需的唯一数,即13,否则您将进入一个非常长/无限的while循环)

如果出于某种原因您不想使用Collections.shuffle(),也可以使用Set实现相同的功能

  Set<Integer> set = new LinkedHashSet<>();
  while (set.size() < 13)
    set.add((int) (Math.random() * 101));
Set Set=newlinkedhashset();
while(set.size()<13)
set.add((int)(Math.random()*101));

请记住,您还必须检查随机数范围是否远大于设置的大小(在上面的示例中,您需要确保101始终大于所需的唯一数,即13,否则您将进入一个非常长/无限的while循环)

使用一个
ArrayList
。它还不错。看,有三行代码:
List al=IntStream.rangeClosed(1,13).boxed().collector(Collectors.toList());Collections.shuffle(al);System.out.println(al)有很多方法可以做到这一点,但看起来我的老师想要的是最复杂的方法。在我看来这很容易,但在Netbeans中不是:):)使用一个
ArrayList
。没那么糟糕。看,三行代码:
List al=IntStream.rangeClosed(1,13)。boxed().collect(Collectors.toList());Collections.shuffle(al);System.out.println(al);
有很多方法可以做到这一点,但看起来我的老师想要的是最复杂的方法。在我看来这很容易,但在Netbeans中不是:):)。