java - 随机生成器始终生成数字 0

标签 java arrays random

我想知道为什么生成的第一个数字总是“0”。

代码如下:

public static void main(String[] args) {

    boolean[] pack = new boolean[52];
    int[] cards = new int[5];

    for (int i = 0; i < pack.length - 1; i++) {
        System.out.print(pack[i] + " | ");         
    }
    System.out.println();

    Random give = new Random();

    for (int i = 0; i < cards.length; i++) {
       while (pack[cards[i]])
            cards[i] = give.nextInt(5);  

       pack[cards[i]] = true;                 
       System.out.println(cards[i]);

    }

    for (int i = 0; i < pack.length - 1; i++) {
        System.out.print(pack[i] + " | ");         
    }     
}

最佳答案

因为 pack(cards[i]) 在第一次迭代中始终为 false。解决方案可能是实现 do-while 而不是 while

检查这个:

主要内容:

import java.util.Random;
public class hw {

       public static void main(String[] args) {

            boolean[] pack = new boolean[52];
            int[] cards = new int[5];

            for (int i = 0; i < pack.length - 1; i++) 
            {
                System.out.print(pack[i] + " | ");         
            }

            System.out.println();

            Random give = new Random();

            for (int i = 0; i < cards.length; i++) {
                do
                {
                    cards[i] = give.nextInt(5); 
                }
                while ( pack[cards[i]] );

                pack[cards[i]] = true;                 
                System.out.println(cards[i]);
            }

            for (int i = 0; i < pack.length - 1; i++) 
            {
                System.out.print(pack[i] + " | ");         
            }     
       }

}

输出:

false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false |

4

3

0

1

2

true | true | true | true | true | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false |

关于java - 随机生成器始终生成数字 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40499442/

相关文章:

C++ 排序数组。为什么需要其他排序方法?

objective-c - 非常基本的 Objective-C 问题

java - 在android中随机执行一个按钮的点击

c++ - 如何在numpy c-api中共享随机数生成器?

postgresql - 通过循环生成[0, 1001]中不重复的随机数的随机数

java - 房间内的光源出乎意料地起作用

java - 在 Ubuntu 中设置 Antlr CLASSPATH

JavaFX - setVisible 隐藏元素但不重新排列相邻节点

java - 在 Java 中检测 CapsLock

arrays - 根据键(id)对perl数组数据结构中的键值对进行排序