Sự việc ngẫu nhiên luôn xảy ra xung quanh chúng ta. Khi bạn tung ra một đồng xu hoặc một con thú cưng, bạn không biết giờ có thể chắc chắn về kết quả cuối cùng. Bất chấp tính chất này có nhiều ứng dụng như xác định người chiến thắng cuộc đấu tranh khi rút thăm may mắn hoặc tạo ra các trường hợp kiểm tra cho một bài kiểm tra với các giá trị ngẫu nhiên được tạo ra dựa trên một thuật toán
Biết được sự hữu ích này, Python đã cung cấp cho chúng ta mô-đun ngẫu nhiên. Bạn có thể sử dụng nó trong các trò chơi để sinh ra đối thủ ngẫu nhiên hoặc để trộn các phần tử trong danh sách
Random Activity Như thế nào?
Gần giống như tất cả các hàm trong mô-đun này phụ thuộc vào hàm
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 62 cơ bản, nó sẽ tạo ra một số float ngẫu nhiên lớn hơn hoặc bằng không và nhỏ hơn một. Python sử dụng Mersenne Twister để tạo số float. Nó tạo ra số float chính xác 53-bit với 2**19937-1 dấu chấm động. Nó thực sự là trình tạo số ngẫu nhiên cho mục đích thông thường được sử dụng rộng rãi nhất
Đôi khi, bạn muốn tạo ngẫu nhiên các số ngẫu nhiên để tạo ra các chuỗi con số mà nó tạo ra lần đầu tiên. Điều này có thể đạt được bằng cách cung cấp cùng hai lần giá trị hạt giống vào trình tạo ngẫu nhiên số bằng hàm
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 63. Nếu tham số bị bỏ qua, quá trình tạo số ngẫu nhiên sẽ sử dụng thời gian hiện tại của hệ thống để tạo ra các số. Dưới đây là một ví dụ
import random random.seed[100] random.random[] # returns 0.1456692551041303 random.random[] # returns 0.45492700451402135
Hãy nhớ rằng, không giống như tung một đồng xu, mô-đun này tạo ra các số giả ngẫu nhiên hoàn toàn xác định, vì vậy nó không thích hợp cho các mục đích mã hóa
Create a natural integer
Mô-đun này có hai hàm khác nhau để tạo ra các số nguyên ngẫu nhiên. Bạn có thể sử dụng
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 64 để tạo ra một số nguyên ngẫu nhiên nhỏ hơn
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 65
Tương tự như vậy, bạn có thể sử dụng
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 66 để tạo một số ngẫu nhiên từ
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 60. Ví dụ, sử dụng
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 61 sẽ chỉ trả về những con số trong khoảng từ 0 đến 100 mà đồng thời chia hết cho 3
Nếu bạn biết cả giới hạn dưới và giới hạn trên, thì bạn có thể sử dụng một hàm đơn giản và trực quan hơn được gọi là
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 62. Nó chỉ đơn giản là một hàm thay thế cho
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 63
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 6
Hàm cho dãy số
To select an Random section from a dãy số không trống, bạn có thể sử dụng hàm
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 64. With
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 65, you are giới hạn lựa chọn trong các con số từ một khoảng nhất định. Hàm
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 64 cho phép bạn chọn một số từ bất kỳ dãy số nào bạn muốn
Một lợi thế khác của hàm này là nó không giới hạn chỉ ở các con số. Nó có thể chọn bất kỳ loại phần tử ngẫu nhiên nào từ một dãy. Chẳng hạn như, tên của người chiến thắng trong cuộc thi Rút thăm may rủi giữa 5 người khác nhau, được cung cấp dưới dạng chuỗi, có thể được xác định bằng hàm này một cách dễ dàng
Nếu bạn muốn trộn một dãy thay vì chọn một phần tử ngẫu nhiên từ nó, bạn có thể sử dụng hàm
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 67. Thao tác này sẽ dẫn đến một dãy số thích hợp. Đối với một dãy chỉ có 10[n] phần tử, có thể có tổng cộng 3628800[n]. ] chỉnh hợp khác nhau. Với một dãy lớn hơn, số vị trí thay đổi có thể sẽ cao hơn— điều chỉnh hàm này với ý rằng hàm này không thể bao giờ tạo ra tất cả các vị trí thay đổi của một dãy lớn
Giả sử bạn phải chọn 50 sinh viên từ 100 nhóm sinh viên để đi du lịch
Tại thời điểm này, bạn có thể tạm thời sử dụng hàm
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 64. Vấn đề là bạn sẽ phải gọi nó là khoảng 50 lần trong trường hợp nhất tốt nhất, nơi nó không chọn hai lần cùng một sinh viên
Một giải pháp tốt hơn là sử dụng hàm
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 69. Nó sẽ trả về một danh sách các phần duy nhất k từ dãy đã cho. Đầu dòng ban đầu không thay đổi. Các phần tử trong danh sách kết quả sẽ theo thứ tự lựa chọn. Nếu k lớn hơn số lượng các phần tử trong dãy, một giá trị ValueError sẽ được sinh ra
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 62
Như bạn có thể thấy,
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 67 đã thay đổi danh sách ban đầu, nhưng
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 69 vẫn giữ nguyên danh sách
Create Number Float Random
Trong phần này, bạn sẽ tìm hiểu về các hàm có thể được sử dụng để tạo các số ngẫu nhiên dựa trên các công cụ phân bổ giá trị thực tế. Các tham số của hầu hết các hàm này được đặt tên theo biến tương ứng trong phương trình thực tế của các phân tích bổ sung đó
Khi bạn chỉ muốn một số từ 0 đến 1, bạn có thể sử dụng hàm
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 62. Nếu bạn muốn đánh số nằm trong một dãy cụ thể, bạn có thể sử dụng hàm
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 623 với a và b tương ứng với các giới hạn bên dưới và bên trên
Giả sử bạn cần tạo một số ngẫu nhiên giữa thấp và cao sao cho có xác suất cao hơn nằm trong vùng lân cận của một số chế độ khác. Bạn có thể làm điều này với hàm
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 624. Các giá trị thấp và cao sẽ là 0 và 1 theo mặc định. Tương tự như vậy, chế độ giá trị mặc định nằm giữa điểm của giá trị thấp và cao, dẫn đến phân bổ đối xứng
Có rất nhiều hàm khác cũng tạo ra các số ngẫu nhiên dựa trên các sự phân bổ khác nhau. Ví dụ, bạn có thể sử dụng
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 625 để tạo ra một số ngẫu nhiên dựa trên một sự phân bổ bình thường, với mu là trung bình và sigma như là một hệ số biến thiên.
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 68
Specify Trọng số
Như chúng ta vừa thấy, có thể tạo ra các số ngẫu nhiên với các phân bổ đồng nhất cũng như sự phân bổ tam giác hoặc bình thường. Ngay cả trong một phạm vi hữu hạn giống như từ 0 đến 100, thì vẫn có một số lượng vô hạn các số float có thể được tạo ra. Điều gì sẽ xảy ra nếu có một tập hợp các phần tử hữu hạn và bạn muốn thêm số quan trọng vào một số giá trị cụ thể trong khi chọn một số ngẫu nhiên?
Nếu ứng dụng của bạn chấp nhận có số lượng quan trọng là giá trị số nguyên, thì bạn có thể tạo một danh sách các phần tử có tần số phụ thuộc vào số quan trọng của chúng. Sau đó, bạn có thể sử dụng hàm
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 64 để chọn một phần tử từ danh sách quan trọng này một cách ngẫu nhiên. Đây là một ví dụ minh hoạ việc lựa chọn một khoản tiền thưởng ngẫu nhiên
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 60
Trong trường hợp của tôi, nó đã mất ít thử nghiệm để có được phần thưởng 2 đô la được lựa chọn từ danh sách. Cơ hội nhận được phần thưởng 100$ sẽ thấp hơn nhiều. Tương tự như vậy, bạn cũng có thể thêm độ lệch cho các chương trình khác
Tóm tắt phần tóm tắt
Mô-đun này có thể hữu ích trong nhiều vấn đề như trộn lẫn các câu hỏi trong bài tập hoặc tạo ra tên hoặc mật khẩu người dùng ngẫu nhiên bằng cách sử dụng hàm
import random random.randrange[100] # returns 65 random.randrange[100] # returns 98 random.randrange[0, 100, 3] # returns 33 random.randrange[0, 100, 3] # returns 75 random.randint[1,6] # returns 4 random.randint[1,6] # returns 627. Bạn cũng có thể tạo ra các số ngẫu nhiên đồng nhất cũng như cung cấp các số quan trọng cho các con số trong một phạm vi cụ thể. Trong hướng dẫn tiếp theo, chúng ta sẽ sử dụng các hàm từ mô-đun này để tạo dữ liệu ngẫu nhiên cho phân tích thống kê
Bạn có nghĩ ra bất kỳ ứng dụng thú vị nào trong quá trình tạo ngẫu nhiên ngẫu nhiên không?