繁体   English   中英

如何生成唯一值数组

[英]How to generate array of unique values

我正在尝试生成一个唯一值数组,但我的第一个数字始终为 0,我该如何解决这个问题?

Random r = new Random();
Scanner in = new Scanner(System.in);
int generatedNumbers = 0;
int winningSum = 0;
int[] list = new int[10];

for (int number = 1; number < list.length; ++number) {
    list[number] = r.nextInt(99);

    for (int uniqueNumber = 0; uniqueNumber < number; ++uniqueNumber) {
        if (list[uniqueNumber] == list[number]) {
            list[number] = r.nextInt(99);
            uniqueNumber = 0;
        }
    }
}
int random_first = r.nextInt(99);)
for (int element : list) {
    System.out.println(element);
}

你需要在你的 for 循环中从零开始,而不是从一开始

Random r = new Random();
int generatedNumbers = 0;
int winningSum = 0;
int[] list = new int[10];
    for(int index = 0; index < list.length; index++) {
        list[index] = r.nextInt(99);
                
        for(int uniqueNumber = 0; uniqueNumber < index; ++uniqueNumber ) {
            if( list[uniqueNumber] == list[index] ) {
                list[index] = r.nextInt(99);
                uniqueNumber = 0;
            }
        }
    }
int random_first = r.nextInt(99);
for (int element: list) {
    System.out.println(element);
}

在你的方法中,你有三个错误(我注意到了)。

首先,这个循环for (int number = 1; number < list.length; ++number)应该从零开始。 因此, for (int number = 0; number < list.length; ++number)

第二,内部检查for (int uniqueNumber = 0; uniqueNumber < number; ++uniqueNumber) {在这里失败uniqueNumber = 0; 它应该是uniqueNumber = -1

最后,在外部 for 循环之后,您不需要这一行int random_first = r.nextInt(99);)


奖金。 为了更容易调试,您可以使用一个技巧。 用 10 替换 99。为什么? 生成列表时,其中的所有值都应该是唯一的。

Random r = new Random();
int[] list = new int[10];

int bound = 10;
for (int number = 0; number < list.length; ++number) {
    list[number] = r.nextInt(bound);

    for (int uniqueNumber = 0; uniqueNumber < number; ++uniqueNumber) {
        if (list[uniqueNumber] == list[number]) {
            list[number] = r.nextInt(bound);
            uniqueNumber = -1;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM