Chúng tôi sử dụng để tạo một số ngẫu nhiên trong dự án của mình cho dữ liệu mẫu, sau này có thể được sử dụng để thử nghiệm, lấp đầy các cột trống hoặc cho nhiều mục đích khác, điều quan trọng là chúng tôi cần tạo dữ liệu ngẫu nhiên. Trong python, có nhiều cách để tạo dữ liệu ngẫu nhiên và chúng ta sẽ khám phá một số cách trong số đó ở đây trong bài viết này -
Mô-đun Python random ()
Một trong những thư viện quan trọng, những gì đi kèm với python là ngẫu nhiên và chúng tôi sẽ sử dụng nó xuyên suốt trong mã của mình.
Để sử dụng mô-đun này trong mã của bạn, bạn chỉ cần nhập mô-đun đó, thế là xong và chúng tôi đã sẵn sàng sử dụng.
import random
Hãy xem cách sử dụng nó -
import random print("What i will get, no idea as i'm using random.random()") print(random.random())
Đầu ra
What i will get, no idea as i'm using random.random() 0.5306626723173611
Lần thứ hai, nếu tôi cố gắng chạy cùng một chương trình - bạn sẽ nhận được đầu ra khác -
What i will get, no idea as i'm using random.random() 0.5504289430397661
Vài điểm trên mô-đun ngẫu nhiên:
- random () là hàm cơ bản của mô-đun ngẫu nhiên
- Hầu hết tất cả các hàm của mô-đun ngẫu nhiên đều sử dụng hàm random ().
- Hàm Random () sẽ tạo ra bất kỳ số nào trong khoảng từ [0,0 đến 1,0).
Tạo số nguyên ngẫu nhiên trong Python
Dưới đây là hai hàm chúng tôi đang sử dụng để tạo số nguyên ngẫu nhiên -
- randint ()
- randrange ()
from random import randint, randrange print("Printing random integer ", randint(0, 20)) print("Printing random integer ", randrange(0, 20, 2))
Đầu ra
Printing random integer 15 Printing random integer 4
Chọn ngẫu nhiên một mục từ danh sách
Hãy xem xét chúng ta có một danh sách tên công ty và chúng ta muốn truy xuất một mục (tên công ty) từ danh sách đó. Chúng ta có thể đạt được điều này bằng cách,
import random companies = ['RELIANCE', 'TCS', 'INFY', 'SBI', 'PNB','HDFC'] print('Randomly selecting company from a list: ', random.choice(companies))
Đầu ra
Randomly selecting company from a list: INFY
Chọn ngẫu nhiên nhiều mục từ một danh sách
Hãy xem xét ví dụ trên nhưng thay vì một mục (công ty), chúng ta muốn chọn ngẫu nhiên nhiều mục (công ty) từ một danh sách, chúng ta có thể đạt được điều này thông qua, hàm random.sample () -
import random companies = ['RELIANCE', 'TCS', 'INFY', 'SBI', 'PNB','HDFC'] print('Randomly selecting 3 companies from a list: ', random.sample(companies,3))
Đầu ra
Randomly selecting 3 companies from a list: ['TCS', 'RELIANCE', 'INFY']
Tuy nhiên, nếu chúng tôi cố gắng chọn các mục nhiều hơn số mục trong danh sách, chúng tôi gặp phải ValueError -
Đầu vào -
random.sample(companies,20)
đầu ra -
ValueError: Sample larger than population or is negative
Một phương pháp khác để chọn nhiều mục ngẫu nhiên từ danh sách là - random.choices ().
import random companies = ['RELIANCE', 'TCS', 'INFY', 'SBI', 'PNB','HDFC'] print('Randomly selecting 3 companies from a list: ', random.choices(companies,k=6))
Đầu ra
Randomly selecting 3 companies from a list: ['TCS', 'TCS', 'INFY', 'HDFC', 'INFY', 'TCS']
Như chúng ta có thể thấy từ kết quả ở trên, chúng ta có thể nhận được một mục trùng lặp từ danh sách khi sử dụng phương thức random.choices ().
trình tạo số giả ngẫu nhiên trong python
Trình tạo số giả ngẫu nhiên hoạt động bằng cách thực hiện một số thao tác trên một giá trị. Nói chung, giá trị này là số trước đó được tạo bởi trình tạo. Tuy nhiên, trong lần đầu tiên bạn sử dụng trình tạo, không có giá trị nào trước đó.
import random print("Seed value 10: ") # Initialize seed value random.seed(10) for i in range(5): print(random.randint(1,100)) print() print("Seed Value 5: ") # this time we'll get different values random.seed(5) for i in range(5): print(random.randint(1,100)) print() print("Seed value: 10") # will get the same result, what we got initially random.seed(10) for i in range(5): print(random.randint(1,100))
Đầu ra
Seed value 10: 74 5 55 62 74 Seed Value 5: 80 33 95 46 89 Seed value: 10 74 5 55 62 74
Như chúng ta thấy từ ví dụ trên, nếu hạt giống giống nhau, nó tạo ra giá trị trước đó đầu tiên. Mỗi giá trị gốc tương ứng với một chuỗi giá trị được tạo cố định cho trình tạo số ngẫu nhiên nhất định.
Tạo các số ngẫu nhiên an toàn bằng mật mã trong python
Chúng tôi có thể tạo một số ngẫu nhiên an toàn bằng mật mã trong python 3.x. Nếu chúng ta có python 3.6 trở lên, chúng ta có thể sử dụng mô-đun bí mật mới và hàm rand bên dưới cho nó. Nó sẽ tạo ra một số ngẫu nhiên dưới giá trị được chỉ định.
import secrets #generate 10 secure random numbers between 10 and 500 for x in range(0,10): secV =10+ secrets.randbelow(500) print(secV)
Đầu ra
464 406 184 293 399 332 495 292 118 134
Một cách khác cho python 3.5 trở xuống, chúng ta có thể sử dụng mô-đun ngẫu nhiên và lớp SystemRandom để tạo các số ngẫu nhiên an toàn bằng mật mã là,
import random randGen = random.SystemRandom() for x in range(0,10): secV = 10+ randGen.randint(0,499) print(secV)
Đầu ra
374 211 425 264 217 97 210 39 319 52
Một cách khác là sử dụng mô-đun ngẫu nhiên và bí mật (để bảo mật dữ liệu).
import secrets import random secNum = random.SystemRandom().random() print("secure number is ", secNum) print("Secure byte token", secrets.token_bytes(16))
Đầu ra
secure number is 0.5205307353786663 Secure byte token b'\x05T>\xacsqn0\x08\xc4\xf4\x8aU\x13\x9f\xcf'