Metodo sample del modulo random

Il metodo sample del modulo random restituisce una selezione casuale di elementi da una sequenza. Nel primo parametro del metodo specifichiamo la sequenza, nel secondo parametro - il numero di elementi che vogliamo selezionare casualmente.

Nel terzo parametro opzionale con nome counts possiamo impostare una lista di elementi per la ripetizione. Ciò permette di aumentare la probabilità di selezione di determinati elementi. Si noti che il terzo parametro del metodo è stato aggiunto solo a partire dalla versione Python 3.9.

Sintassi

pythonimport random

random.sample(sequenza, numero_elementi, [counts=ripetizioni])

Esempio

Prendiamo tre elementi casuali da una lista:

pythonlst = [1, 2, 3, 4, 5]
print(random.sample(lst, 3))

Risultato dell'esecuzione del codice:

python[2, 1, 5]

Esempio

Proviamo anche a prendere un campione di elementi casuali da una tupla:

pythontpl = (1, 2, 3, 4, 5)
print(random.sample(tpl, 2))

Risultato dell'esecuzione del codice:

python[3, 2]

Esempio

È anche possibile selezionare elementi da una sequenza generata dalla funzione range:

pythonprint(random.sample(range(0, 10), 3))

Risultato dell'esecuzione del codice:

python[0, 8, 9]

Esempio

Ora prendiamo una lista e con il parametro counts impostiamo le ripetizioni per ogni elemento della lista. Nel nostro caso, lasciamo che il primo elemento si ripeta due volte, il secondo - tre, e il terzo - quattro volte. È anche necessario specificare il nome del parametro k per l'output del numero di elementi:

pythonlst = [1, 2, 3]
print(random.sample(lst, counts=[2, 3, 4], k=3))

Questo codice è equivalente al seguente:

pythonlst = [1, 1, 2, 2, 2, 3, 3, 3, 3] # lista effettiva
print(random.sample(lst, 3))

Esempio

Ora proviamo a prendere elementi da un insieme:

pythonst = {1, 2, 3, 4, 5}
print(random.sample(st, 2))

Verrà restituito il seguente errore:

error[5, 2]
DeprecationWarning: Sampling from a set deprecated
since Python 3.9 and will be removed in a subsequent version.
print(random.sample(st, 2))

Ciò è dovuto al fatto che dalla versione Python 3.9 non è prevista la possibilità di prendere campioni da un insieme.

Vedi anche

  • metodo choice del modulo random,
    che restituisce un elemento casuale da una sequenza
  • metodo random del modulo random,
    che restituisce un numero pseudo-casuale