Mescolare i numeri contenuti in una lista
Soluzione 1
La funzione shuffle() della libreria random risolve il problema
import random # shuffle()
NUMERI=[1,9,2,8]
random.shuffle(NUMERI) # [8, 2, 9, 1]
random.shuffle(NUMERI) # [9, 8, 1, 2]
Soluzione 2
import random # randint()
NUMERI = [...] # Inserisci i numeri
n=len(lista) # Quanti scambi?
for p1 in range(n):
p2=random.randint(0,n-1) # posizione casuale
temp = lista[p1] # scambia p1-esimo con p2-esimo
lista[p1] = lista[p2]
lista[p2] = temp
Osserva
- esegue n volte lo scambio di due elementi
- lo scambio coinvolge in sequenza tutti gli elementi con un elemento a caso
Soluzione 3
Osserva
- esegue n volte lo scambio di due elementi
- lo scambio coinvolge due elementi a caso
import random # randint()
NUMERI = [...] # Inserisci i numeri
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
Con la sintassi di Python lo scambio può essere espresso con una sola riga di codice
lista[p1], lista[p2] = lista[p2], lista[p1]