Bonjour,
je suis nouveau sur le forum, excusez moi si je ne respecte pas certaines règles, je ne sais même pas si je suis au bon endroit pour poster ça.
Voilà le problème :
Je veux créer une fonction qui prend deux entiers positifs ou nuls en argument et qui me renvoie un tableau de n lignes et à deux colonnes. (Chaque ligne correspond à une coordonnée). Chaque ligne est aléatoire et unique dans le tableau (elles sont toutes différentes)
J'ai cherché longtemps et je suis passé par différentes fonctions mais voilà celle que je trouvais la meilleure. Quand je la fais fonctionner, il n'y a pas de message d'erreur mais le tableau généré contient souvent des lignes identiques. De toute évidence, la partie du code chargée de l'unicité des lignes ne fonctionne pas et je ne comprend pas comment régler le problème. Je comprend le problème mais je ne vois pas comment faire autrement...
voilà le code de ma fonction, j'en ai fais un exemple pour n=4 et cmax=1 (il faut savoir que n représente le nombre de lignes (le nombre de coordonnées du tableau) et que cmax représente le maximum des coordonnées.) Il me semble qu'il faut une condition sur les arguments pour que la boucle while ne tourne pas indéfiniment. (n<=(cmax+1)**(cmax+1)
# cela affiche un tableau avec 4 lignes différentes, mais aussi parfois avec deux lignes identiques. par exemple :
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
24
25
26 from math import * import numpy as np from random import * # la fonction qui permet d'obtenir la liste def GPI( n, cmax): pi=[] for i in range (n): # boucle qui va générer la termes aléatoire de la suite a=randint(0,cmax) b=randint(0,cmax) C=[a,b] for t in range(i): # boucle censé vérifier que le terme générer n'est pas déjà dans la suite, c'est la partie qui foire... if C==pi[t] : k=0 while C==pi[t] : # s'il y est alors on regénère le terme jusqu'à ce qu'il soit différent de tous les autres c=randint(0,cmax) d=randint(0,cmax) C=[c,d] pi.append(C) PI=np.array(pi) # création d'un tableau return PI print(GPI(4,1))
il y a deux lignes identiques ça va pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 [[0,0] [1,1] [1,0] [0,0]]
est-ce que quelqu'un peut m'aider en me montrant un code qui marche s'il vous plaît ?
Partager