Почему заполнение m / 2 слотов массива n by n случайно сгенерированными индексами занимает всего 2 миллиона попыток? - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь выполнить этот вызов , и я не совсем понимаю,

Решение объяснено, комментарий

1) если M

Таким образом, при заполнении массива 10 на 10 50 целыми числами 9 генерируется случайная строка и столбец, а если массив [строка] [столбец] уже имеет 9, мы генерируем новую строку и столбец и повторяем попытку.

Будет ли это технически длиться вечно или, по крайней мере, более чем в 2 * 50 раз, так как мы можем стать действительно неудачниками в отличие от того, что говорит решение?

Код выглядит примерно так:

int[][] array = new int[10][10];
int placed = 0;
int num_to_place = 50;
while (placed < num_to_place) {
  int row = random.nextInt(10);
  int col = random.nextInt(10);
  if (array[row][col] == 9) {
    continue;
  }

  array[row][col] = 9;
  ++placed;
}

Также см. Официальные строки кода решения 37-55: от https://gist.github.com/dgossow/d28083522608771e1c65f49822820ba9

...