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中不是:):)。