java中1和0之间的随机矩阵填充

java中1和0之间的随机矩阵填充,java,arrays,random,Java,Arrays,Random,我试图用0和1随机填充一个二维int数组这是我用来填充数组的方法 private void buildMaze(){ maze=new int[this.mazeSize][this.mazeSize]; for(int i=0;i<this.mazeSize;i++){ for(int j=0;j<this.mazeSize;j++){ this.maze[i][j]=r.nextIn

我试图用0和1随机填充一个二维int数组这是我用来填充数组的方法

   private void buildMaze(){
           maze=new int[this.mazeSize][this.mazeSize];
       for(int i=0;i<this.mazeSize;i++){
            for(int j=0;j<this.mazeSize;j++){
                this.maze[i][j]=r.nextInt(2)-1;    
            }
        }
}
我的问题是:如何用随机值正确填充数组​​介于0和1之间?

随机。nextInt(int-bound)方法返回介于0(包含)和指定值(排除)之间的int值。对于你的例子,它返回的值在0到1之间,但是你从中减去1。所以当这个方法返回0时,减去1,得到-1

按照以下方式更新您的代码:

this.maze[i][j]=r.nextInt(2);  
假设你使用A,你可以考虑使用(它不会快速消耗熵)。你也可以用一个


你可以试试这样的

Math.random()
返回带正号的双精度值,大于或等于0.0且小于1.0

            double j=Math.random();
            j=(j>0.5)?1:0;

您可能希望显示r(随机数生成器)的声明和初始化。您可能希望使用Math.random()而不是random类Math.random生成0到1之间的随机数,然后显式将其强制转换为Intop,但也可以解释OP代码不起作用的原因。
private void buildMaze() {
    maze = new int[this.mazeSize][this.mazeSize];
    for (int[] row : maze) {
        for (int j = 0; j < row.length; j++) {
            row[j] = r.nextInt(2); // <-- 0 (inclusive) to 2 (exclusive)
        }
    }
}
Math.random()
            double j=Math.random();
            j=(j>0.5)?1:0;