Почему код останавливается когда в М вставлять значение больше n -1 ? Не выбивает ошибку, консоль зависает и все. #Python

import random

def RanDom_non_oriental_graff(n, M):
   matrix = []
   x = 1    
   def random_():
      x = random.randint(0, n - 1)
      return x  

   for i in range(n):
       m = []
       matrix.append(m)
       for j in range(n):
          m = []
          matrix[i].append(m)
        

    while x != ((M * M) - 1):
        q = random_()
        w = random_()

        if matrix[q][w] == [] and q != w:
            matrix[q][w] = [1]
            matrix[w][q] = [1]
            x += 1
        elif matrix[q][w] != [] and q == w:
            pass
return matrix

Ответы (1 шт):

Автор решения: MBo

цикл

while x != ((M * M) - 1):
    q = random_()
    w = random_()

вообще-то бесконечный

После исправления:

В матрице n x n имеется n^2 мест. Каждое ребро занимает два места, поэтому, когда x достигает n^2/2, места больше нет, и цикл бесконечно тыркается в занятые места.

А к чему M вообще? Если подразумевалось количество рёбер, то нужно ыбло сделать

while x < min(M, n*n//2):
→ Ссылка