-1

对不起,我的英语不好。我为Android写了一个游戏。我只需要生成 4 个不重复的数字(都不同)。

这是我的代码,但它不起作用:/ k = 3 in start

Random rand = new Random();    

a = rand.nextInt(10);
b = rand.nextInt(10);
c = rand.nextInt(10);
d = rand.nextInt(10);

for (int i = 1; i < k; i++) {
    if (a == b) {
        b = rand.nextInt(10);
        k++;
    }
    else {
        k = 0;
    }
}
for (int i = 1; i < k; i++) {
    if (a == c || b == c ) {
        c = rand.nextInt(10);
        k++;
    }
    else {
        k = 0;
    }
}
for (int i = 1; i < k; i++) {
    if (a == d || b == d || c == d) {
        d = rand.nextInt(10);
        k++;
    }
    else {
        k = 0;
    }
}

当我尝试带上号码时,它们可以重复。

4

3 回答 3

2

制作一个包含 10 个整数 [0, 1, 2, 3, ... 9] 的列表,例如 ArrayList,调用 Collections.shuffle() 并获取前四个元素

于 2013-09-07T14:59:39.470 回答
2
    java.util.Random random = new java.util.Random();
    java.util.HashSet<Integer> ints = new java.util.HashSet<Integer>();
    do {
        ints.add(random.nextInt(10));
    } while (ints.size()<4);

如果您需要非平凡的随机数生成,您需要为 Android 查看此内容。http://android-developers.blogspot.com/2013/08/some-securerandom-thoughts.html

于 2013-09-07T14:55:55.590 回答
1

尝试这个

import java.util.Random;

public class Test {

    public static void main(String args[]){
        Random rand = new Random();
        int[] array = new  int[4];

        int count=0;
         while(count < 4){
             int randomNumber = rand.nextInt(10);
             if(!contains(array,randomNumber)){
                 array[count] = randomNumber;
                 count++;
             }
         }
        printArray(array);
    }


        public static boolean contains( int[] array,  int key) {
            boolean result = false;
            for (int i = 0; i < array.length; i++){
                if(array[i]== key)
                    result = true;
            }
            return result;
        } 

        public static void printArray(int[] array){
            for(int i=0;i<array.length;i++){
                System.out.println(array[i]);
            }
        }

}
于 2013-09-07T14:59:13.797 回答