De sample methode van de random module
De methode sample van de module random
retourneert een willekeurige steekproef van elementen uit
een reeks. In de eerste parameter van de
methode specificeren we de reeks, in de
tweede parameter - het aantal elementen,
dat we willekeurig willen selecteren.
In de derde optionele benoemde
parameter k kunnen we een lijst
van elementen voor herhaling opgeven. Dit maakt het mogelijk
de kans op selectie van bepaalde
elementen te vergroten. Let op dat
de derde parameter van de methode alleen is toegevoegd
vanaf Python versie 3.9.
Syntaxis
import random
random.sample(reeks, aantal elementen, [k=herhaling])
Voorbeeld
Laten we drie willekeurige elementen uit een lijst halen:
lst = [1, 2, 3, 4, 5]
print(random.sample(lst, 3))
Resultaat van de code:
[2, 1, 5]
Voorbeeld
Laten we ook proberen een steekproef van willekeurige elementen uit een tuple te nemen:
tpl = (1, 2, 3, 4, 5)
print(random.sample(tpl, 2))
Resultaat van de code:
[3, 2]
Voorbeeld
Het is ook mogelijk elementen te selecteren uit
de reeks gegenereerd door de
functie range:
print(random.sample(range(0, 10), 3))
Resultaat van de code:
[0, 8, 9]
Voorbeeld
Laten we nu een lijst nemen en met behulp van
de parameter counts herhalingen toewijzen
voor elk element in de lijst. In ons
geval, laat het eerste element twee keer herhalen,
de tweede - drie, en de derde - vier
keer. Het is ook nodig om de parameter naam
k op te geven voor het aantal uit te voeren elementen:
lst = [1, 2, 3]
print(random.sample(lst, counts=[2, 3, 4], k=3))
Deze code is equivalent aan het volgende:
lst = [1, 1, 2, 2, 2, 3, 3, 3, 3] # feitelijk zo'n lijst
print(random.sample(lst, 3))
Voorbeeld
Laten we nu proberen elementen uit een set te halen:
st = {1, 2, 3, 4, 5}
print(random.sample(st, 2))
We krijgen de volgende foutmelding:
[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))
Dit komt omdat vanaf Python
versie 3.9 het niet mogelijk is
om een steekproef uit een set te nemen.