random --- tạo số ngẫu nhiên

Module này triển khai một bộ tạo số ngẫu nhiên giả (PRNG). PRNG là LCG kiểu Yasmarang 32-bit; khi nhập lần đầu, nó lấy một hạt giống 32-bit từ cùng nguồn phần cứng mà os.urandom() sử dụng, và mỗi số tiếp theo là một hàm xác định của hạt giống đó.

Cảnh báo

Đầu ra không an toàn về mặt mật mã -- thuật toán có thể dự đoán được từ một chuỗi đầu ra ngắn, và hạt giống ban đầu chỉ mang 32 bit entropy. Để tạo khóa, token phiên, muối mật khẩu, hoặc bất kỳ mục đích sử dụng nhạy cảm về bảo mật nào khác, hãy gọi os.urandom() thay thế.

Ghi chú

Ký hiệu sau được sử dụng cho các khoảng:

  • () là dấu ngoặc khoảng mở và không bao gồm các điểm đầu cuối. Ví dụ, (0, 1) có nghĩa là lớn hơn 0 và nhỏ hơn 1. Trong ký hiệu tập hợp: (0, 1) = {x | 0 < x < 1}.

  • [] là dấu ngoặc khoảng đóng bao gồm tất cả các điểm giới hạn. Ví dụ, [0, 1] có nghĩa là lớn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 1. Trong ký hiệu tập hợp: [0, 1] = {x | 0 <= x <= 1}.

Các hàm cho số nguyên

random.getrandbits(n: int) int

Trả về một số nguyên với n bit ngẫu nhiên (0 <= n <= 32).

random.randint(a: int, b: int) int

Trả về một số nguyên ngẫu nhiên trong khoảng [a, b].

random.randrange(start: int, stop: int | None = None, step: int = 1) int

Dạng đầu tiên trả về một số nguyên ngẫu nhiên từ khoảng [0, stop). Dạng thứ hai trả về một số nguyên ngẫu nhiên từ khoảng [start, stop). Dạng thứ ba trả về một số nguyên ngẫu nhiên từ khoảng [start, stop) theo bước step. Ví dụ, gọi randrange(1, 10, 2) sẽ trả về các số lẻ từ 1 đến 9 bao gồm.

Các hàm cho số thực dấu phẩy động

random.random() float

Trả về một số thực dấu phẩy động ngẫu nhiên trong khoảng [0.0, 1.0).

random.uniform(a: float, b: float) float

Trả về một số thực dấu phẩy động ngẫu nhiên N sao cho a <= N <= b khi a <= b, và b <= N <= a khi b < a.

Các hàm khác

random.seed(n: int | None = None, /) None

Khởi tạo module bộ tạo số ngẫu nhiên với hạt giống n, phải là một số nguyên. Khi không có đối số nào (hoặc None) được truyền vào, PRNG được gieo lại hạt giống từ cùng nguồn đặc trưng của cổng mà os.urandom() sử dụng.

random.choice(sequence: Any) Any

Chọn và trả về một mục ngẫu nhiên từ sequence (tuple, danh sách hoặc bất kỳ đối tượng nào hỗ trợ thao tác chỉ số con).