Почему код останавливается когда в М вставлять значение больше 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):