Mescolare

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]