如何在填充数组时从随机方法中排除特定数字

发布于 2025-01-20 21:50:25 字数 354 浏览 0 评论 0原文

我正在寻找一种从随机方法填充数组中排除一个数字的解决方案。我编写了以下代码,但我不想使用“i--”,而是想使用 while 语句。有谁知道如何处理它?

Random random = new Random();
int[] tab = new int[10];
    for(int i=0 ; i<10 ; i++) {
    int randomNumber = random.nextInt(11);
        if(randomNumber == 5) {
            i--;
            continue;
        }
        tab[i] = randomNumber;
}

I'm looking for a solution for exclude one number from Random method filling an array. I wrote a following code but instead of using "i--" I would like to use while statement. Does anyone have an idea how to handle it?

Random random = new Random();
int[] tab = new int[10];
    for(int i=0 ; i<10 ; i++) {
    int randomNumber = random.nextInt(11);
        if(randomNumber == 5) {
            i--;
            continue;
        }
        tab[i] = randomNumber;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

恏ㄋ傷疤忘ㄋ疼 2025-01-27 21:50:25

您可以生成一个 0(含)到 10(不含)之间的随机整数,然后“移动”这些值以省略 5。

Random random = new Random();
for (int i=0 ; i<10 ; i++) {
    int randomNumber = random.nextInt(10);
    if (randomNumber < 5) {
        tab[i] = randomNumber;
    }
    else {
        tab[i] = randomNumber + 1;
    }
}

编辑:显示包括循环的完整代码。)

编辑 2 :OP 想要一个重新生成 randomNumber 直到它不是 5 的解决方案:

Random random = new Random();
for (int i=0 ; i<10 ; i++) {
    int randomNumber;
    while ((randomNumber.nextInt(11)) != 5) {
        tab[i] = randomNumber;
    }
}

You could generate a random integer between 0 (inclusive) to 10 (exclusive) and then "shift" the values to omit 5.

Random random = new Random();
for (int i=0 ; i<10 ; i++) {
    int randomNumber = random.nextInt(10);
    if (randomNumber < 5) {
        tab[i] = randomNumber;
    }
    else {
        tab[i] = randomNumber + 1;
    }
}

(EDIT: Show full code including the loop.)

EDIT 2: OP wants a solution that regenerates randomNumber until it is not 5:

Random random = new Random();
for (int i=0 ; i<10 ; i++) {
    int randomNumber;
    while ((randomNumber.nextInt(11)) != 5) {
        tab[i] = randomNumber;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文