Estrazione casuale

Soluzione 1

La funzione choice() della libreria random risolve il problema

import random                          # choice() 
  
NUMERI = [1, 9, 2, 8] 
  
x1 = random.choice(NUMERI); print(x1)  # 8 
x2 = random.choice(NUMERI); print(x2)  # 9
...

Soluzione 2

...  
n  = len(NUMERI)             # Numero elementi
 
p1 = random.randint(0, n-1)  # Posizione casuale da 0 a n-1 
x1 = NUMERI[p1]              # Estrazione del numero
 
p2 = random.randint(0, n-1)  # Un'altra posizione casuale
x2 = NUMERI[p2]              # Un altro numero casuale
...

Soluzione 3

Basta una sola riga di codice per ogni numero

...
x1 = NUMERI[random.randint(0, len(NUMERI)-1)]
x2 = NUMERI[random.randint(0, len(NUMERI)-1)]
...

Estrazione senza reinserimento

Le estrazioni devono dare valori diversi…

Soluzione 1

...  
x1 = random.choice(NUMERI)  # 8 
NUMERI.remove(x1)           # [1, 9, 2]
x2 = random.choice(NUMERI)  # 9
NUMERI.remove(x2)           # [1, 2]
...

Soluzione 2

...  
p = random.randint(0, len(NUMERI)-1)  # Posizione casuale 
x = NUMERI[p]                         # Estrazione  
del NUMERI[p]                         # Eliminazione
...

Funzione

import random  # randint() 
 
def estrazione(lista): 
    p = random.randint(0, len(lista)-1) 
    x = lista[p] 
    del lista[p]
    return x 
 
NUMERI = [1, 9, 2, 8]
  
x1 = estrazione(NUMERI)  # x1=8, NUMERI=[1, 9, 2]
x2 = estrazione(NUMERI)  # x2=9, NUMERI=[1, 2]
...

Senza eliminazione

Estrarre, dal registro di classe, un certo numero di interrogati.

La lista originale non viene alterata.
Le estrazioni successive vengono inserite in una lista solo se non sono già presenti.

import random
 
def estrazione(lista): 
    p = random.randint(0, len(lista)-1) 
    x = lista[p] 
    return x 

#------------------------------------------------------
NUMERI   = list(range(1, 25))  # Elenco registro: 1..24  
ESTRATTI = []                  # Elenco interrogati
N        = 4                   # Numero interrogati

while(len(ESTRATTI) < N):
    x = estrazione(NUMERI)
    if(x not in ESTRATTI):
        ESTRATTI.append(x)

print(ESTRATTI)  # Non ordinati
ESTRATTI.sort()
print(ESTRATTI)  # In ordine

Se la lista contiene direttamente i nomi diventa tutto più chiaro…