Je reçois en entrée une liste de chaînes et je dois renvoyer une liste avec ces mêmes chaînes mais dans un ordre aléatoire. Je dois autoriser les doublons - la même chaîne peut apparaître une ou plusieurs fois dans l'entrée et doit apparaître autant de fois dans la sortie.
Je vois plusieurs moyens "brutaux" de faire cela (en utilisant des boucles, Dieu nous en préserve), dont je suis en train d'utiliser. Cependant, sachant que Python existe probablement une solution unique, le travail est fait, non?
>>> import random
>>> x = [1, 2, 3, 4, 3, 4]
>>> random.shuffle(x)
>>> x
[4, 4, 3, 1, 2, 3]
>>> random.shuffle(x)
>>> x
[3, 4, 2, 1, 3, 4]
On dirait que c'est le moyen le plus simple, sinon le plus véritablement aléatoire ( cette question explique plus en détail les limitations): http://docs.python.org/library/random.html#random.shuffle
Étant donné une chaîne item , voici un one-liner:
''.join([str(w) for w in random.sample(item, len(item))])
Vous devrez lire les chaînes dans un tableau, puis utiliser un algorithme de réorganisation. Je recommande Mélanger Fisher-Yates
import random
b = []
a = int(input(print("How many items you want to shuffle? ")))
for i in range(0, a):
n = input('Please enter a item: ')
b.append(n)
random.shuffle(b)
print(b)