Computer >> Máy Tính >  >> Lập trình >> Python

Tạo số giả ngẫu nhiên trong Python


Nhiều ứng dụng máy tính cần số ngẫu nhiên được tạo. Tuy nhiên, không ai trong số họ tạo ra một con số thực sự ngẫu nhiên. Python, giống như bất kỳ kỹ thuật lập trình nào khác, sử dụng trình tạo giả ngẫu nhiên. Thế hệ ngẫu nhiên của Python dựa trên thuật toán Mersenne Twister tạo ra số nổi chính xác 53 bit. Kỹ thuật này nhanh chóng và an toàn theo chuỗi nhưng không phù hợp với mục đích mật mã.

Thư viện chuẩn của Python chứa mô-đun ngẫu nhiên xác định các chức năng khác nhau để xử lý ngẫu nhiên.

random.seed () - Hàm này khởi tạo bộ tạo số ngẫu nhiên. Khi mô-đun ngẫu nhiên được nhập, trình tạo sẽ được khởi tạo với sự trợ giúp của thời gian hệ thống. Để gửi lại trình tạo, hãy sử dụng bất kỳ đối tượng int, str, byte hoặc bytearray nào.

random.getstate () - Hàm này cùng với hàm setstate () giúp tái tạo lại nhiều lần cùng một dữ liệu ngẫu nhiên. Hàm getstate () trả về trạng thái bên trong của trình tạo số ngẫu nhiên.

random.setstate () - Chức năng này khôi phục trạng thái bên trong của trình tạo.

Các hàm sau xử lý việc tạo số nguyên ngẫu nhiên -

random.randrange () - Hàm này tạo ra một số nguyên ngẫu nhiên giữa phạm vi đã cho. Nó có thể có ba tham số.

random.randrange(start, stop, step)

Các tham số bắt đầu và bước là tùy chọn. Giá trị mặc định của chúng lần lượt là 0 và 1. Bước xác định khoảng thời gian giữa các số liên tiếp.

>>> random.randrange(10)
5
>>> random.randrange(10, 20)
17
>>> random.randrange(100, 200, 2)
188

(Lưu ý:Hãy nhớ rằng đầu ra của các câu lệnh trên và cả phần còn lại của các câu lệnh trong bài viết này có thể không giống như chúng được tạo ngẫu nhiên)

random.randint () - Hàm này tạo ra một số nguyên ngẫu nhiên giữa hai tham số. Nó tương tự như hàm randrange () không có tham số bước. Tham số bắt đầu là bắt buộc.

>>> random.randint(1,10)
6
>>> random.randint(100, 200)
134

Các hàm sau xử lý các số ngẫu nhiên dấu phẩy động.

random.random () - Hàm này tạo ngẫu nhiên một số dấu phẩy động từ 0,0 đến 1,0

>>> random.random()
0.668544544081956

random.uniform () - Hàm này trả về một số ngẫu nhiên dấu phẩy động giữa hai tham số.

>>> random.uniform(0.5,1.5)
1.2760281470664903
>>> random.uniform(1,10)
7.336985794193224
>>> random.uniform(10,5)
7.817794757786727

Các hàm sau đây hoạt động dựa trên các đối tượng trình tự viz. chuỗi, danh sách hoặc tuple.

random.choice () - Chức năng này chọn một phần tử ngẫu nhiên từ chuỗi. Nếu chuỗi trống, IndexError sẽ xuất hiện.

>>> random.choice("Tutorialspoint")
'o'
>>> random.choice(range(10))
2
>>> random.choice([15,31,6,29,55, 5])
55
>>> random.choice((15,31,6,29,25, 55))
15

random.choices () - Chức năng này chọn nhiều phần tử từ danh sách một cách ngẫu nhiên. Tham số đầu tiên của hàm này là trình tự và tham số thứ hai là số lượng lựa chọn được thực hiện.

>>> name = "TutorialsPoint"
>>> random.choices(name, k = 2)
['T', 'o']

random.shuffle () - Hàm này sắp xếp lại các phần tử theo một trình tự có thể thay đổi và đặt chúng một cách ngẫu nhiên.

>>> num = [10,20,30,40,50]
>>> random.shuffle(num)
>>> num
[50, 20, 40, 30, 10]

random.sample () - Hàm này hoạt động với trình tự bất biến. Nó trả về một danh sách các mục được chọn ngẫu nhiên từ chuỗi vẫn giữ nguyên.

>>> name = "TutorialsPoint"
>>> nm = random.sample(name, k = 2)
>>> name, nm
('TutorialsPoint', ['i', 'a'])