def mat_connexe(n, p=0.2): """génère une matrice n*n avec des 0 et des 1 , 0 sur la diagonale, au moins un 1 par ligne, une probabilité de l'ordre de p d'avoir 1""" m=np.full(shape=(n, n),fill_value=0)#initialise un matrice n*n avec des 0 for i in range(n):#ligne for j in range(n):#colonne if i != j: m[i][j] = int(random() < p)# 1 en position (i,j) avec un probabilité de p else: m[i][j] = 0#0 sinon for i in range(n-1): if sum(m[i]) == 0:#pour ajouter un 1 au cas où la ligne ne comporte pas du tout de 1 m[i][randint(i+1, n-1)]=1#on place un 1 aléatoirement après la diagonale return m