Bonjour à tous,

Je manque de logique sur la façon de faire une liste bien particulière (ou un tableau si vous avez votre propre idée) :

En gros j'ai besoin de générer une liste aléatoire mais avec des conditions. Pour l'instant j'ai réussi à faire 3 conditions mais je viens de voir que j'ai une exception que je n'avais pas prévu
j'ai besoin de : une liste de 5 couples aleatoires (10 nombres) de 20 à 24 dans mon exemple, avec les conditions suivantes :
1) jamais plus de 2 fois le même nombre dans une liste (ce qui revient à avoir obligatoirement chaque nombre présent 2 fois en tout dans la liste)
2) jamais deux nombres identiques dans un même couple
3) ce que je n'arrive pas à faire : jamais deux couples identiques au sein de la liste (si j'ai (20,21), je ne veux pas d'un autre (20,21), ni d'un (21,20)
De plus le problème qu'il peut arriver c'est que la seule combinaison possible restante soit deux nombres identiques (mais donc impossible et ça boucle en continu)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
couples = []
i = 0
while len(couples) < 10:
    couples.append(randrange(20, 25))
    #Si l'alea en cours est égal à sa paire
    if i%2 == 1 and couples[i] == couples[i-1]:
        #le supprimer de la liste
        del couples[i]
        continue
    #Si on arrive au dernier alea et qu'il y a plus de 2 fois le meme nombre
    if i == 9 and couples.count(couples[i])>= 3 :
        #Reinitialiser la liste
        couples = []
        i = 0
        continue
    #A partir du deuxième couple, s'il y a plus de 2 fois le même nombre
    if i >= 2 and couples.count(couples[i])>= 3 :
        #supprimer l'alea en cours
        del couples[i]
        continue
    else:
        i += 1
Si vous avez une idée et même une façon plus simple et plus propre de faire ça je suis preneur (comparaison de tableau peut etre)
Merci d'avance.

Bon week-end.