A sample metódus a random modulban
A sample metódus a random modulban
véletlenszerű elemválogatást ad vissza egy
sorozatból. A metódus első paraméterében
a sorozatot adjuk meg, a második paraméterben
pedig azon elemek számát, amelyeket véletlenszerűen
szeretnénk kiválasztani.
A harmadik, opcionális névparaméterben,
a k-ban megadhatjuk az elemek listáját
az ismétléshez. Ez lehetővé teszi, hogy növeljük
a megadott elemek kiválasztásának valószínűségét.
Figyeljük meg, hogy a metódus harmadik paramétere
csak a Python 3.9 verziójától kezdve
érhető el.
Szintaxis
import random
random.sample(sorozat, elemek_szama, [k=ismétlés])
Példa
Véletlenszerűen válasszunk ki három elemet a listából:
lst = [1, 2, 3, 4, 5]
print(random.sample(lst, 3))
A kód végrehajtásának eredménye:
[2, 1, 5]
Példa
Próbáljunk meg véletlenszerű elemeket kiválasztani egy tuple-ból is:
tpl = (1, 2, 3, 4, 5)
print(random.sample(tpl, 2))
A kód végrehajtásának eredménye:
[3, 2]
Példa
Elemeket választhatunk ki azokból a sorozatokból is,
amelyeket a range függvény generál:
print(random.sample(range(0, 10), 3))
A kód végrehajtásának eredménye:
[0, 8, 9]
Példa
Most vegyünk egy listát, és a counts paraméter
segítségével rendeljünk ismétlődéseket minden egyes
listaelemhez. Esetünkben legyen az első elem
ismétlése kétszer, a másodiké háromszor, a harmadiké
pedig négyszer. Szükséges továbbá megadni a k
paraméter nevét is a kimeneti elemek számához:
lst = [1, 2, 3]
print(random.sample(lst, counts=[2, 3, 4], k=3))
Ez a kód ekvivalens a következővel:
lst = [1, 1, 2, 2, 2, 3, 3, 3, 3] # gyakorlatilag ez a lista
print(random.sample(lst, 3))
Példa
Most próbáljunk meg elemeket kiválasztani egy halmazból:
st = {1, 2, 3, 4, 5}
print(random.sample(st, 2))
A következő hibaüzenetet kapjuk:
[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))
Ennek oka az, hogy a Python 3.9
verziójától kezdve nincs lehetőség
válogatás készítésére halmazból.