我写了一个生成20个随机数的程序。重复该计划的几率约为1/3。我该如何重建我的程序?谁能帮助我?
for (int i = 0; i <= 19; i++) {
rand[i] = (int) (Math.random() * 60 + 1);
}
for(int i=0;i<=19;i++)
{
rand_back[i]=rand[i];
}
for (int i = 0; i<=19;) {
for(int j=0;j<=19;j++) {
//porównaj czy wsytapiła juz taka sama liczba
if((rand[i]==rand_back[j])&&(j!=i)) {
rand[j]=(int) (Math.random()*60+1);
}
if(j==19){
j=0;
i++;
}
if(i==19) {
break;
}
}
if(i==19) {
break;
}
}
Set<Integer> ds = new LinkedHashSet<>();
System.out.println("step-1");
for( int i=0; i<10; i++ )
ds.add( i );
ds.add( (int) (7d) );
ds.add( (int) (7d) );
ds.add( (int) (17d) );
ds.forEach(System.out::println);
System.out.println("step-2");
while (ds.size() < 20)
ds.add( (int) (Math.random()*100) );
System.out.println("Size: " + ds.size());
ds.forEach(System.out::println);
7或任何其他int没有重复。如果你必须生成第二个数组,只需使用while循环添加20个位置,并获取列表的最后20个项目。