2015-04-25 3 views
0

Как я могу получить доступ к matrix (int[][] matrix), используя случайный (с семенем)?Случайный доступ к матрице с использованием семян в Java

Я хочу напечатать matrix случайно.

Как использовать seed и random методы? Можете ли вы привести мне пример?

SeedВажный. Я хочу писать все только один раз.

int[][] matrix = ini(); 
// print matrix randomly using seed...? 
+0

'как я могу Acces к матрице 'Какая матрица? Где код? Вы имеете в виду случайный случай из класса Random? – copeg

+0

Я имею в виду матрицу int: 'int [] [] matrix'. Да, случайный класс - или есть лучший способ? – slearace

ответ

1

Установите семя случайного экземпляра

Random rand = new Random(seed); 

Вы можете получить инклюзивное случайное значение с помощью вызова метода nextInt ...

int row = rand.nextInt(matrix.length); 

... и использовать эти значения для доступа к матрице:

int val = matrix[row][otherRandomValue]; 

К prin t матрица случайным образом, вам нужно будет перебрать длину строки и столбца. Чтобы избежать повторяющихся значений, вы можете сохранить набор индексов (например, с помощью класса java.awt.Point) и проверить этот набор, чтобы увидеть, если значение было еще используется

Set<Point> uniques = new HashSet<Point>(); 

for (int i = 0; i < matrix.length; i++){//loop over rows 
    for (int j = 0; j < matrix[i].length; j++){ 
     Point p = new Point(rand.nextInt(matrix.length), rand.nextInt(matrix[i].length)); 
     while (uniques.contains(p)){ 
      p = new Point(rand.nextInt(matrix.length), rand.nextInt(matrix[i].length)); 
     } 
     uniques.add(p); 
     //p.x and p.y contain the indexes 
    } 
} 
+0

Затем петля над матрицей. Есть много примеров для этого онлайн, и я отредактировал свой ответ с небольшим сокращенным сокращением цикла – copeg

+0

Я думаю, что OP не хочет печатать один и тот же индекс строки/столбца дважды. – Stefan

+0

Это не гарантирует, что у меня есть список или дублирование. – slearace