Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Cách chọn ngẫu nhiên một phần tử từ danh sách trong Python
Trong bài viết này, chúng ta sẽ tìm hiểu các cách khác nhau để chọn một phần tử ngẫu nhiên từ danh sách trong Python. Giả sử bạn có một danh sách tên người dùng Twitter và cần chọn ngẫu nhiên một người dùng từ danh sách đó.

Dưới đây là danh sách mẫu:
twitter_user_names = [
'@rahulbanerjee99',
'@python_engineer',
'@FCBarcelona',
'@FerranTorres20',
'@elonmusk',
'@binance',
'@SpaceX'
]
Thư viện random trong Python
Thư viện random là một thư viện tích hợp sẵn trong Python, tức là bạn không cần phải cài đặt thêm gì. Dưới đây là 3 cách khác nhau để chọn ngẫu nhiên một phần tử từ danh sách với thư viện random.
Sử dụng chỉ mục ngẫu nhiên
import random num_items = len(twitter_user_names) random_index = random.randrange(num_items) winner = twitter_user_names[random_index] print(winner)
Kết quả mẫu:
Bài viết này được đăng tại [free tuts .net]
@binance
random.randrange(num_items)trả về một số ngẫu nhiên từ0đếnnum_items - 1.- Sau đó, số này được dùng làm chỉ mục để truy cập phần tử tương ứng trong danh sách.
Sử dụng random.choice()
winner = random.choice(twitter_user_names) print(winner)
Kết quả mẫu:
@SpaceX
- Hàm
random.choice()nhận vào một chuỗi (sequence), chẳng hạn danh sách, và trả về một phần tử ngẫu nhiên từ đó. - Đây là cách đơn giản và ngắn gọn nhất để chọn một phần tử ngẫu nhiên.
Chọn nhiều phần tử ngẫu nhiên với random.sample()
winners = random.sample(twitter_user_names, 2) print(winners)
Kết quả mẫu:
['@python_engineer', '@rahulbanerjee99']
- Hàm
random.sample()tương tự nhưrandom.choice(), nhưng cho phép bạn chỉ định số lượng phần tử ngẫu nhiên cần chọn. - Hàm này trả về một danh sách chứa các phần tử được chọn.
Giữ kết quả ngẫu nhiên cố định với random.seed()
Trong một số trường hợp, bạn có thể muốn kết quả ngẫu nhiên giống nhau mỗi lần chạy chương trình (ví dụ, để gỡ lỗi). Sử dụng random.seed() sẽ đảm bảo điều này.
random.seed(0) winner = random.choice(twitter_user_names) print(winner)
random.seed()nhận vào một số nguyên.- Nếu bạn sử dụng cùng một giá trị cho tham số seed, kết quả ngẫu nhiên sẽ luôn giống nhau.
Thư viện secrets trong Python
Thư viện secrets được ưu tiên hơn so với random trong các trường hợp cần độ bảo mật cao, ví dụ như chọn mật khẩu ngẫu nhiên hoặc xử lý thông tin nhạy cảm.
Lưu ý: Thư viện này có sẵn từ Python 3.6 trở lên. Nếu bạn dùng phiên bản thấp hơn, cần cài đặt thêm gói backport của secrets.
Sử dụng chỉ mục ngẫu nhiên với secrets.randbelow()
import secrets num_items = len(twitter_user_names) random_index = secrets.randbelow(num_items) winner = twitter_user_names[random_index] print(winner)
Kết quả mẫu:
@binance
- Hàm
secrets.randbelow(num_items)tương tự nhưrandom.randrange(), trả về một số ngẫu nhiên trong khoảng từ0đếnnum_items - 1.
Sử dụng secrets.choice()
winner = secrets.choice(twitter_user_names) print(winner)
Kết quả mẫu:
@binance
- Hàm
secrets.choice()hoạt động giốngrandom.choice(), trả về một phần tử ngẫu nhiên từ danh sách được truyền vào. - Ưu điểm là bảo mật tốt hơn.
Chọn nhiều phần tử ngẫu nhiên với secrets.SystemRandom().sample()
winners = secrets.SystemRandom().sample(twitter_user_names, 2) print(winners)
Kết quả mẫu:
['@SpaceX', '@binance']
secrets.SystemRandom()cung cấp cách tạo số ngẫu nhiên bảo mật cao.- Hàm
sample()hoạt động giống vớirandom.sample(), cho phép chọn nhiều phần tử từ danh sách.
Lưu ý về secrets và tính ngẫu nhiên cố định
Không giống như thư viện random, secrets không hỗ trợ cơ chế giữ kết quả ngẫu nhiên cố định (bằng seed). Vì vậy, mỗi lần chạy, bạn sẽ luôn nhận được kết quả khác nhau.
Khi nào nên sử dụng random và secrets?
- Sử dụng
randomcho các tác vụ thông thường, như chọn ngẫu nhiên phần tử từ danh sách không yêu cầu bảo mật. - Sử dụng
secretskhi cần xử lý thông tin nhạy cảm hoặc yêu cầu bảo mật cao, chẳng hạn chọn mật khẩu hoặc mã xác thực.
Kết bài
Bạn có thể chọn ngẫu nhiên một phần tử từ danh sách trong Python bằng nhiều cách, tùy thuộc vào yêu cầu cụ thể:
| Cách thực hiện | Thư viện | Phương pháp | Độ phức tạp |
|---|---|---|---|
| Chỉ mục ngẫu nhiên | random | random.randrange() |
Cơ bản |
| Phần tử ngẫu nhiên | random | random.choice() |
Cơ bản |
| Nhiều phần tử ngẫu nhiên | random | random.sample() |
Trung bình |
| Bảo mật cao (ngẫu nhiên) | secrets | secrets.choice() / .sample() |
Nâng cao |
Chọn phương pháp phù hợp sẽ giúp bạn đạt được kết quả nhanh và tối ưu nhất.

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng