Phương thức sample của module random
Phương thức sample của module random
trả về một mẫu ngẫu nhiên các phần tử từ
một chuỗi. Ở tham số đầu tiên của
phương thức, chúng ta chỉ định chuỗi, ở
tham số thứ hai - số lượng phần tử,
mà chúng ta muốn chọn một cách ngẫu nhiên.
Ở tham số thứ ba không bắt buộc được đặt tên
k, chúng ta có thể chỉ định danh sách
các phần tử để lặp lại. Điều này cho phép
tăng xác suất lấy mẫu của các phần tử đã chỉ định.
Lưu ý rằng
tham số thứ ba của phương thức chỉ được thêm vào
bắt đầu từ phiên bản Python 3.9.
Cú pháp
import random
random.sample(chuỗi, số lượng phần tử, [k=lặp lại])
Ví dụ
Hãy lấy ba phần tử ngẫu nhiên từ một danh sách:
lst = [1, 2, 3, 4, 5]
print(random.sample(lst, 3))
Kết quả thực thi mã:
[2, 1, 5]
Ví dụ
Hãy thử lấy mẫu các phần tử ngẫu nhiên từ một tuple:
tpl = (1, 2, 3, 4, 5)
print(random.sample(tpl, 2))
Kết quả thực thi mã:
[3, 2]
Ví dụ
Cũng có thể chọn các phần tử từ
chuỗi được tạo ra bởi
hàm range:
print(random.sample(range(0, 10), 3))
Kết quả thực thi mã:
[0, 8, 9]
Ví dụ
Bây giờ hãy lấy một danh sách và sử dụng
tham số counts để gán số lần lặp lại
cho mỗi phần tử trong danh sách. Trong trường hợp của chúng ta,
hãy để phần tử đầu tiên lặp lại
hai lần, phần tử thứ hai - ba lần, và phần tử thứ ba - bốn
lần. Cũng cần chỉ định tên tham số
k để xuất số lượng phần tử:
lst = [1, 2, 3]
print(random.sample(lst, counts=[2, 3, 4], k=3))
Mã này tương đương với mã sau:
lst = [1, 1, 2, 2, 2, 3, 3, 3, 3] # danh sách thực tế như vậy
print(random.sample(lst, 3))
Ví dụ
Bây giờ hãy thử lấy các phần tử từ một tập hợp:
st = {1, 2, 3, 4, 5}
print(random.sample(st, 2))
Chúng ta sẽ nhận được lỗi sau:
[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))
Điều này liên quan đến việc từ phiên bản Python
3.9, không có khả năng
lấy mẫu từ một tập hợp.