Как я могу отобразить N x N матрицу случайных чисел в Java? - PullRequest
2 голосов
/ 01 декабря 2010

Я пытаюсь создать матрицу случайных двойных чисел. Матрица должна иметь размер n x n, и все числа должны быть от 1 до 100. Я пытался разобраться с этим целую вечность, и я знаю, что это должно быть что-то настолько простое (как это обычно бывает).

Вот мой код:

public static void main(String[] args) { 
    PrintRandomGraph(RandomArray(4));
}

private static double[] RandomArray(int n) {  
    double[] randomArray = new double[n];
    double[][] randomMatrix = new double [n][n];

    Random rand = new Random(); 
    rand.setSeed(System.currentTimeMillis()); 
    for (int i = 0; i < n; i++) {

        Integer r = rand.nextInt()% 100; 
        randomArray[i] = Math.abs(r);
        for (int j = 0; j < n; j++) {
            Arrays.fill(randomMatrix, i, i+1, randomArray);
        }  
    }

    return randomArray;  
}

private static void PrintRandomGraph(double[] inputArray) {
    int n = inputArray.length;
    double[] showArray = new double[n];
    double[][] showMatrix = new double [n][n];

    for (int j = 0; j < n; j++) {
        for (int i = 0; i < n; i++) {
            double r = inputArray[i];
            showArray[i] = r; 
            Arrays.fill(showMatrix, i, i+1, showArray);
        }
    }

    System.out.println(Arrays.deepToString(showMatrix));
}

Когда я запускаю код, я получаю случайный массив, повторяемый n раз, например:

[[63,0, 97,0, 64,0, 75,0], [63,0, 97,0, 64,0, 75,0], [63,0, 97,0, 64,0, 75,0], [63,0, 97,0, 64,0, 75,0]]

Я думаю, мне нужно вернуться к началу цикла for и добавить новый массив ...? Пожалуйста, помогите = (

Любая помощь очень ценится. Спасибо.

Ответы [ 2 ]

3 голосов
/ 01 декабря 2010

Вы пробовали что-то вроде этого:

private static double[][] RandomArray(int n) {
    double[][] randomMatrix = new double [n][n];

    Random rand = new Random(); 
    rand.setSeed(System.currentTimeMillis()); 
    for (int i = 0; i < n; i++) {     
        for (int j = 0; j < n; j++) {
            Integer r = rand.nextInt()% 100; 
            randomMatrix[i][j] = Math.abs(r);
        }

    }

    return randomMatrix;
}

для печати графика:

public void printGraph(double[][] array, int n) {
    for (int i = 0; i < n; i++) {     
        for (int j = 0; j < n; j++) {
            System.out.println(array[i][j]);
        } 
    }
}

для печати графика в квадратных скобках:

public void printGraph(double[][] array, int n) {
        for (int i = 0; i < n; i++) {  
            System.out.print(" [ ");   
            for (int j = 0; j < n; j++) {
                System.out.print(array[i][j]);
            } 
            //Put println instead of print here to have each row in a new line
            System.out.print(" ]");
        }
    }

ТакжеЭто похоже на домашнюю работу, если это так, пожалуйста, пометьте ее так:)

0 голосов
/ 02 декабря 2010

Привет, все это дает ответ, который я искал

 private static double[][] RandomArray(int n) {
        double[][] randomMatrix = new double [n][n];
        double[] randomArray = new double [n];
         Random rand = new Random(); 
            rand.setSeed(System.currentTimeMillis()); 

        for (int i = 0; i < n; i++) {   

            for (int j = 0; j < n; j++) {
                Integer r = rand.nextInt()% 100; 
                randomMatrix[i][j] = Math.abs(r);
            }

        }

        return randomMatrix;
    }


public static void main(String[] args){

        //PrintRandomGraph(RandomArray(5));
    System.out.println(Arrays.deepToString(RandomArray(5)));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...