我有一个问题要写更多的关于随机数的清晰程序而不必重复。我的代码有效,但效果不是很好。
我尝试了很多想法,尤其是我只是玩循环游戏
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;
}
我希望13个数字不会重复此数字,但是如何写起来容易
答案 0 :(得分:0)
我试图解决您的问题
第一种方式:
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);
}
}
答案 1 :(得分:0)
如果由于某些原因您不想使用Collections.shuffle(),则也可以使用Set来实现相同目的。
Set<Integer> set = new LinkedHashSet<>();
while (set.size() < 13)
set.add((int) (Math.random() * 101));
请记住,您还必须检查随机数范围是否远大于设置的大小(在上面的示例中,您需要确保101始终大于所需的唯一数,即13 ,否则您将陷入一个很长/无限的while循环)