Moduulin random sample-metodi
Moduulin random metodi sample
palauttaa satunnaisen otoksen elementeistä
sekvenssistä. Menetelmän ensimmäisessä parametrissa
määritämme sekvenssin, toisessa parametrissa - elementtien määrän,
jotka haluamme valita satunnaisesti.
Kolmannessa valinnaisessa nimetyssä
parametrissa k voimme asettaa listan
toistettavista elementeistä. Tämä mahdollistaa
määritettyjen elementtien otostodennäköisyyden lisäämisen. Huomaa, että
menetelmän kolmas parametri on lisätty vasta
Pythonin versiosta 3.9 alkaen.
Syntaksi
import random
random.sample(sekvenssi, elementtien määrä, [k=toisto])
Esimerkki
Otetaan satunnaiset kolme elementtiä listasta:
lst = [1, 2, 3, 4, 5]
print(random.sample(lst, 3))
Koodin suorituksen tulos:
[2, 1, 5]
Esimerkki
Kokeillaan myös ottaa otos satunnaisista elementeistä monikosta:
tpl = (1, 2, 3, 4, 5)
print(random.sample(tpl, 2))
Koodin suorituksen tulos:
[3, 2]
Esimerkki
Elementtejä voi myös valita
sekvenssistä, jonka funktio range
generoi:
print(random.sample(range(0, 10), 3))
Koodin suorituksen tulos:
[0, 8, 9]
Esimerkki
Otetaan nyt lista ja parametrilla
counts määritetään toistot
jokaiselle listan elementille. Meidän tapauksessamme, ensimmäinen elementti toistetaan
kaksi kertaa, toinen - kolme, ja kolmas - neljä
kertaa. Myös parametrin nimi k on määritettävä elementtien määrän tulostamiseksi:
lst = [1, 2, 3]
print(random.sample(lst, counts=[2, 3, 4], k=3))
Tämä koodi vastaa seuraavaa:
lst = [1, 1, 2, 2, 2, 3, 3, 3, 3] # käytännössä tällainen lista
print(random.sample(lst, 3))
Esimerkki
Yritetään nyt ottaa elementtejä joukosta:
st = {1, 2, 3, 4, 5}
print(random.sample(st, 2))
Saamme seuraavan virheen:
[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))
Tämä johtuu siitä, että Pythonin version
3.9 alkaen otoksen ottaminen joukosta ei ole enää mahdollista.