Có thể tạo ngẫu nhiên bằng Python không?

Bạn đã bao giờ tự hỏi làm thế nào bạn có được một số xúc xắc ngẫu nhiên mỗi khi bạn chơi Ludo trực tuyến chưa. Hoặc cách xáo trộn danh sách bài hát của bạn hoạt động?

Hóa ra, ứng dụng trò chơi hoặc âm nhạc của bạn tạo ra các số ngẫu nhiên bên dưới mui xe. Và dựa trên số ngẫu nhiên này, nó sẽ quyết định số xúc xắc nào sẽ hiển thị hoặc bài hát nào sẽ phát

Nhưng việc xáo trộn danh sách phát “ngẫu nhiên” của bạn có vẻ không phải là ngẫu nhiên? . Trình tạo số giả ngẫu nhiên (PRNG) là một thuật toán tạo ra các số dường như ngẫu nhiên. Hãy cùng tìm hiểu về Python Random Number Generator

Có thể tạo ngẫu nhiên bằng Python không?

Mô-đun ngẫu nhiên Python

Python tạo các số giả ngẫu nhiên này bằng mô-đun ngẫu nhiên. Nhưng nếu bạn truy cập tài liệu Python để tìm tài liệu của mô-đun này, bạn sẽ thấy cảnh báo ở đó –

“Không nên sử dụng các trình tạo giả ngẫu nhiên của mô-đun này cho mục đích bảo mật. ”

Rõ ràng, các số giả ngẫu nhiên mà mô-đun ngẫu nhiên tạo ra không an toàn về mặt mật mã. Python sử dụng thuật toán Mersenne Twister để tạo số ngẫu nhiên. Nhưng thuật toán này là hoàn toàn xác định, làm cho nó trở thành một lựa chọn không phù hợp cho các mục đích mã hóa

Bây giờ, hãy chuyển sang các chức năng tích hợp khác nhau, trong mô-đun ngẫu nhiên. Các chức năng này có khả năng tạo các số giả ngẫu nhiên trong các tình huống khác nhau

Các hàm tích hợp cho Trình tạo số ngẫu nhiên Python

Có thể tạo ngẫu nhiên bằng Python không?

Danh sách dưới đây chứa một mô tả ngắn gọn về các chức năng mà chúng tôi sẽ trình bày để tạo số ngẫu nhiên

Chức năngNó làm gì randint(x, y)Tạo một số nguyên ngẫu nhiên từ x đến y, bao gồm cả x và y. range(bắt đầu, dừng, bước)Tạo một số nguyên ngẫu nhiên trong phạm vi(bắt đầu, dừng, bước . . . . . . . . . . . . . . . . . . . . )random()Tạo một số dấu phẩy động ngẫu nhiên trong khoảng [0,1)uniform(x, y)Nó tạo ra một giá trị dấu chấm động giữa xy. mẫu(dân số, k)Chọn k các phần tử ngẫu nhiên duy nhất từ ​​một dân số trình tự hoặc tập hợp. choice(seq)Chọn một phần tử ngẫu nhiên từ một chuỗi không trống seq. xáo trộn(x)Xáo trộn danh sách x tại chỗ. seed(x)Tạo cùng một chuỗi số ngẫu nhiên mỗi khi bạn gọihạt giống(x)

Bây giờ chúng ta hãy tìm hiểu sâu hơn về từng chức năng này

1. Python randint()

Hàm này tạo ra một số nguyên giữa các giới hạn đã chỉ định. Nó nhận hai đối số x và y và tạo ra số nguyên i sao cho x <= i <= y

>>> import random
>>> random.randint(3, 6)

đầu ra

4
>>>

2. Phạm vi Python()

Hàm này nhận 2 đối số start và stop cùng với 1 bước đối số tùy chọn. Và trả về một số nguyên ngẫu nhiên trong phạm vi (bắt đầu, dừng, bước). Giá trị mặc định của bước là 1

>>> import random
>>> random.randrange(1, 10, 2)

đầu ra

3
>>>

Trong ví dụ này, đầu ra sẽ là một số nguyên ngẫu nhiên từ [1, 3, 5, 7, 9] vì giá trị bắt đầu và dừng lần lượt là 1 và 10 và giá trị bước là 2

3. Python ngẫu nhiên()

Hàm này trả về một số dấu phẩy động ngẫu nhiên trong khoảng từ 0 đến 1 (không bao gồm 0 và 1)

>>> import random
>>> random.random()

đầu ra

0. 5313843048739985
>>>

4. Đồng phục Python()

Hàm này cho phép bạn tạo một số dấu phẩy động trong một giới hạn cụ thể. Phải mất hai đối số để bắt đầu và dừng, sau đó trả về một dấu phẩy động giữa bắt đầu và dừng (bao gồm cả các giới hạn)

>>> import random
>>> random.uniform(6, 9)

đầu ra

6. 338126781525701
>>>

5. Lựa chọn Python()

Nếu bạn muốn chọn một yếu tố ngẫu nhiên từ một chuỗi cụ thể, bạn có thể sử dụng chức năng này. Phải mất một đối số - trình tự. Và nó trả về một phần tử ngẫu nhiên từ chuỗi

>>> import random
>>> seq = (12, 33, 67, 55, 78, 90, 34, 67, 88)
>>> random.choice(seq)

đầu ra

67
>>>

6. Mẫu Python()

Nếu bạn muốn có nhiều phần tử ngẫu nhiên từ một chuỗi, bạn có thể sử dụng sample(). Nó nhận hai đối số là dân số và k, trong đó dân số là một dãy và k là một số nguyên. Sau đó, nó trả về một danh sách gồm k phần tử ngẫu nhiên từ quần thể chuỗi

>>> import random
>>> seq = (12, 33, 67, 55, 78, 90, 34, 67, 88)
>>> random.sample(seq, 5)

đầu ra

[33, 90, 78, 88, 12]
>>>

7. Xáo trộn Python()

Hàm này nhận một đối số - một danh sách. Sau đó, nó xáo trộn các phần tử của danh sách tại chỗ và trả về Không có

>>> import random
>>> l = [10, 20, 30, 40, 50]
>>> random.shuffle(l)
>>> print(l)

đầu ra

[20, 40, 30, 50, 10]

8. Hạt giống Python()

Bạn có thể sử dụng hàm này khi cần tạo nhiều lần cùng một dãy số ngẫu nhiên. Phải mất một đối số - giá trị hạt giống. Giá trị này khởi tạo trình tạo số giả ngẫu nhiên. Bây giờ, bất cứ khi nào bạn gọi hàm seed() với giá trị hạt giống này, nó sẽ tạo ra chuỗi số ngẫu nhiên giống hệt nhau

import random
# seed value = 3
random.seed(3)
for i in range(3):
    print(random.random(), end = ' ')

print('\n')

# seed value = 8
random.seed(8)
for i in range(3):
    print(random.random(), end = ' ')

print('\n')

# seed value again = 3
random.seed(3)
for i in range(3):
    print(random.random(), end = ' ')

print('\n')

đầu ra

0. 23796462709189137 0. 5442292252959519 0. 369955166548079250. 2267058593810488 0. 9622950358343828 0. 12633089865085956

0. 23796462709189137 0. 5442292252959519 0. 36995516654807925

>>>

Lưu ý rằng đối với seed = 3, cùng một trình tự được tạo ra mỗi lần

Tóm lược

Trong bài viết này, chúng ta đã xem xét một số hàm được sử dụng phổ biến có khả năng tạo số giả ngẫu nhiên trong Python. Chúng tôi đã thấy các chức năng chúng tôi có thể sử dụng để tạo số nguyên. Chúng tôi cũng đã thấy cách tạo các giá trị dấu phẩy động ngẫu nhiên. Cuối cùng, chúng ta đã thấy cách chúng ta có thể sử dụng các hàm tích hợp để chọn các phần tử ngẫu nhiên trong chuỗi. Bạn có thể xây dựng các dự án nhỏ khác nhau bằng cách sử dụng các số ngẫu nhiên. Bạn có thể xây dựng trò chơi, bạn có thể sử dụng các số ngẫu nhiên khi làm việc với số liệu thống kê trong Khoa học dữ liệu, v.v. Sử dụng sự sáng tạo của bạn và chơi với các con số