Μέθοδος sample της μονάδας random
Η μέθοδος sample της μονάδας random
επιστρέφει μια τυχαία δειγματοληψία στοιχείων από
μια ακολουθία. Στην πρώτη παράμετρο
της μεθόδου καθορίζουμε την ακολουθία, στη
δεύτερη παράμετρο - τον αριθμό των στοιχείων,
που θέλουμε να επιλέξουμε τυχαία.
Στην τρίτη προαιρετική ονομασμένη
παράμετρο k μπορούμε να ορίσουμε μια λίστα
στοιχείων για επανάληψη. Αυτό επιτρέπει
την αύξηση της πιθανότητας δειγματοληψίας συγκεκριμένων
στοιχείων. Παρατηρήστε ότι
η τρίτη παράμετρος της μεθόδου προστέθηκε μόνο
από την έκδοση Python 3.9 και μετά.
Σύνταξη
import random
random.sample(ακολουθία, αριθμός στοιχείων, [k=επανάληψη])
Παράδειγμα
Ας πάρουμε τρία τυχαία στοιχεία από μια λίστα:
lst = [1, 2, 3, 4, 5]
print(random.sample(lst, 3))
Αποτέλεσμα εκτέλεσης κώδικα:
[2, 1, 5]
Παράδειγμα
Ας δοκιμάσουμε επίσης να πάρουμε δειγματοληψία τυχαίων στοιχείων από ένα tuple:
tpl = (1, 2, 3, 4, 5)
print(random.sample(tpl, 2))
Αποτέλεσμα εκτέλεσης κώδικα:
[3, 2]
Παράδειγμα
Επίσης μπορούμε να επιλέξουμε στοιχεία από
την ακολουθία που παράγεται από
τη συνάρτηση range:
print(random.sample(range(0, 10), 3))
Αποτέλεσμα εκτέλεσης κώδικα:
[0, 8, 9]
Παράδειγμα
Τώρα ας πάρουμε μια λίστα και χρησιμοποιώντας
την παράμετρο counts να ορίσουμε επαναλήψεις
για κάθε στοιχείο της λίστας. Στην περίπτωσή μας,
ας επαναληφθεί το πρώτο στοιχείο
δύο φορές, το δεύτερο - τρεις, και το τρίτο - τέσσερις
φορές. Επίσης είναι απαραίτητο να καθορίσουμε το όνομα της παραμέτρου
k για την έξοδο του αριθμού των στοιχείων:
lst = [1, 2, 3]
print(random.sample(lst, counts=[2, 3, 4], k=3))
Αυτός ο κώδικας είναι ισοδύναμος με τον ακόλουθο:
lst = [1, 1, 2, 2, 2, 3, 3, 3, 3] # πρακτικά αυτή η λίστα
print(random.sample(lst, 3))
Παράδειγμα
Τώρα ας δοκιμάσουμε να πάρουμε στοιχεία από ένα set:
st = {1, 2, 3, 4, 5}
print(random.sample(st, 2))
Θα λάβουμε το ακόλουθο σφάλμα:
[5, 2]
DeprecationWarning: Η δειγματοληψία από set είναι deprecated
από την Python 3.9 και θα αφαιρεθεί σε επόμενη έκδοση.
print(random.sample(st, 2))
Αυτό συμβαίνει επειδή από την έκδοση Python
3.9 δεν προβλέπεται δυνατότητα
δειγματοληψίας από set.