How do I randomly fill an array in Java?

前端 未结 3 1171
温柔的废话
温柔的废话 2020-12-22 04:24

I\'m writing a program that creates a 2D array from a integer n. I then have to fill the array with values from 1 to the nn array size and check to see if it is a magic

相关标签:
3条回答
  • 2020-12-22 04:48

    You'll need to shuffle the values. You could shuffle each row, then each column, but I suggest you put all the values in one big n * n 1D array and shuffle that, then fill the 2D array.

    0 讨论(0)
  • 2020-12-22 04:48

    To create a random square matrix of values from 0 to n*n-1:

    System.out.print("Enter an whole number: ");
    int n = scan.nextInt();
    int size = n * n;
    
    // create see dvalues
    List<Integer> values = new ArrayList<Integer>(size);
    for (int i=0; i<size; i++) {
      values.add(i);
    }
    Collections.shuffle(values);
    
    // now create the magic square
    int[][] magic = new int[n][];
    int index = 0;
    for (int i=0; i<n; i++) {
      magic[i] = new int[n];
      for (int j=0; j<n; j++) {
        values.get(index++);
      }
    }
    

    It's only a slight modification to use the range 1 to n*n.

    The first stage seeds the range with unique values then uses the standard function Collections.shuffle() to randomize the order.

    0 讨论(0)
  • 2020-12-22 05:02

    create a shuffled list of numbers to add to your array, something like this:

     List<Integer> numbers = new ArrayList<Integer>();
     for (int i=1; i<=n*n; i++) numbers.add(i);
     Collections.shuffle(numbers);
    
     int [][] magic = new int [n][n];
    
     int index = 0;
     for (int row = 0; row < magic.length; row++)
     {
        for(int col = 0; col < magic[row].length; col++)
            magic[row][col] = numbers.get(index++);
     }
    
    0 讨论(0)
提交回复
热议问题