Je souhaite créer une liste de valeurs aléatoires avec une longueur spécifique avec chaque valeur au moins une fois dans une plage en utilisant Python. Voici mon code Python:
[1, 3, 2, 4, 1, 5]
J'ai obtenu une liste de sortie à une exécution comme ci-dessous:
[1, 4, 2, 4, 1, 5]
Dans la sortie ci-dessus dans start et la plage d'arrêt (1-5) 3 est manquante. Mais je veux la liste avec chaque valeur au moins une fois dans la plage. Ma sortie attendue comme ci-dessous:
import random Start = 1 Stop = 5 limit = 6 RandomListOfIntegers = [random.randint(Start, Stop) for iter in range(limit)] print(RandomListOfIntegers)
Guide-moi pour obtenir la sortie ci-dessus. Merci d'avance.
3 Réponses :
Vous pouvez générer tous les nombres, mélanger ce que vous avez généré puis ajouter un nombre aléatoire pour atteindre la limite:
import random Start = 1 Stop = 5 limit = 6 RandomListOfIntegers = list(range(Start, Stop+1)) random.shuffle(RandomListOfIntegers) RandomListOfIntegers.extend(random.choices(RandomListOfIntegers, k=limit-Stop)) print(RandomListOfIntegers)
Merci beaucoup pour vos conseils. J'ai obtenu ma sortie attendue selon votre code suggéré. Merci.
Vous le faites en deux étapes
limite allValues = list(range(start, stop + 1)) random.shuffle(allValues) randomListOfIntegers = allValues + [random.randint(start, stop) for iter in range(limit - stop)]
Vous pouvez aussi, générer toutes les valeurs et les mélanger, puis ajouter des éléments pour atteindre la limit
randomListOfIntegers = random.sample(range(start, stop + 1), stop) + \
[random.randint(start, stop) for iter in range(limit - stop)]
Merci beaucoup pour vos conseils. J'ai obtenu ma sortie attendue selon votre code suggéré. Merci.
Je pense qu'il serait plus facile de créer une liste avec tous les nombres, d'ajouter des éléments supplémentaires puis de les mélanger, comme ceci:
[3, 2, 4, 1, 5, 3]
il produit:
import random
Start=1
Stop=5
Limit=6
mylist = list(range(Start,Stop+1))
for i in range(Limit-(Stop-Start)-1):
mylist.append(random.randint(Start,Stop))
random.shuffle(mylist)
print(mylist)
Cette mylist = [Start: Stop] n'existe pas;
@Gamopo: Merci beaucoup pour vos conseils. J'ai obtenu ma sortie attendue selon votre code suggéré. Merci.
En supposant que la limite est supérieure à la plage allant du début à l'arrêt, que diriez-vous de créer une liste avec [start, start + 1, ..., stop], en ajoutant autant que vous en avez besoin, puis en mélangeant la liste?