Soluzione 1
La funzione shuffle() della libreria random risolve il problema
1 2 3 4 5 6 |
import random # shuffle() NUMERI=[1,9,2,8] random.shuffle(NUMERI) # [8, 2, 9, 1] random.shuffle(NUMERI) # [9, 8, 1, 2] |
Soluzione 2
Come funzione utente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import random # randint() def mescola(lista): n=len(lista) # Quanti scambi? for i in range(n): p=random.randint(0,n-1) # posizione casuale temp = lista[i] # scambia i-esimo con ... lista[i] = lista[p] lista[p] = temp #-------------------------------------------------------- NUMERI = [...] # Inserisci i numeri mescola(NUMERI) |
Osserva
- esegue n volte lo scambio di due elementi
- lo scambio coinvolge l’elemento i-esimo e un elemento a caso
Soluzione 3
Osserva
- esegue n volte lo scambio di due elementi
- lo scambio coinvolge due elementi a caso
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import random # randint() def mescola(lista): n=len(lista) # Quanti scambi? for i in range(n): p1=random.randint(0, n-1) # 1° posizione casuale p2=random.randint(0, n-1) # 2° posizione casuale temp = lista[p1] # scambia p1-esimo con p2-esimo lista[p1] = lista[p2] lista[p2] = temp #-------------------------------------------------------- NUMERI = [...] # Inserisci i numeri mescola(NUMERI) |
Con la sintassi di Python lo scambio può essere espresso con una sola riga di codice
1 2 3 |
... lista[p1], lista[p2] = lista[p2], lista[p1] ... |