Tạo số thập phân và số nguyên ngẫu nhiên trong Python, bao gồm random (), randrange () và randint ()

Kinh doanh

Số ngẫu nhiên có thể được tạo bằng cách sử dụng các hàm random (), Uniform (), randange () và randint () trong mô-đun ngẫu nhiên của thư viện chuẩn Python.

Mô-đun ngẫu nhiên được bao gồm trong thư viện tiêu chuẩn, vì vậy không cần cài đặt thêm. Tất nhiên, bạn cần phải nhập nó.

Thông tin sau được cung cấp ở đây.

  • random.random()(Số dấu phẩy động từ 0,0 đến 1,0)
  • random.uniform()(Bất kỳ phạm vi số dấu phẩy động nào)
  • Tạo các số ngẫu nhiên tuân theo phân phối chuẩn, phân phối Gaussian, v.v.
  • random.randrange()(Số nguyên của phạm vi và bước tùy ý)
  • random.randint()(Một số nguyên trong bất kỳ phạm vi nào)
  • Tạo danh sách với các số ngẫu nhiên dưới dạng phần tử
    • Danh sách các số dấu phẩy động ngẫu nhiên
    • Danh sách các số nguyên ngẫu nhiên
  • Khởi tạo trình tạo số ngẫu nhiên (sửa hạt giống số ngẫu nhiên)

Xem bài viết sau về cách trích xuất hoặc sắp xếp ngẫu nhiên các phần tử của danh sách.

random.random()(Số dấu phẩy động từ 0,0 đến 1,0)

Hàm random () của mô-đun ngẫu nhiên tạo ra một số dấu phẩy động ngẫu nhiên của loại float nằm trong khoảng từ 0,0 đến 1,0.

import random

print(random.random())
# 0.4496839011176701

random.uniform()(Bất kỳ phạm vi số dấu phẩy động nào)

uniform(a, b)Các chức năng của mô-đun ngẫu nhiên này tạo ra các số ngẫu nhiên kiểu số thực dấu phẩy động trong bất kỳ phạm vi nào sau đây

  • a <= n <= b
  • b <= n <= a
import random

print(random.uniform(100, 200))
# 175.26585048238275

Hai đối số có thể lớn hơn hoặc nhỏ hơn; nếu chúng bằng nhau, chúng sẽ tự nhiên chỉ trả về giá trị đó. Giá trị trả về luôn là một số thực.

print(random.uniform(100, -100))
# -27.82338731501028

print(random.uniform(100, 100))
# 100.0

Đối số cũng có thể được chỉ định dưới dạng float.

print(random.uniform(1.234, 5.637))
# 2.606743596829249

Giá trị của b có được bao gồm trong phạm vi hay không phụ thuộc vào cách làm tròn sau đây, như được ghi lại.
a + (b-a) * random.random()

Giá trị điểm cuối b có nằm trong khoảng hay không phụ thuộc vào việc làm tròn dấu phẩy động trong phương trình sau
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation

Tạo các số ngẫu nhiên tuân theo phân phối chuẩn, phân phối Gaussian, v.v.

Các hàm ngẫu nhiên () và đồng nhất () ở trên tạo ra các số ngẫu nhiên có phân phối đồng nhất, nhưng cũng có các hàm tạo các số dấu phẩy động tuân theo phân phối sau.

  • phân phối beta:random.betavariate()
  • phân phối theo cấp số nhân:random.expovariate()
  • phân phối gamma:random.gammavariate()
  • Phân phối Gaussian:random.gauss()
  • Phân phối lognormal:random.lognormvariate()
  • phân phối bình thường:random.normalvariate()
  • Phân phối Von Mises:random.vonmisesvariate()
  • Phân phối Pareto:random.paretovariate()
  • Phân phối Weibull:random.weibullvariate()

Các tham số của mỗi phân phối được chỉ định bởi các đối số. Xem tài liệu chính thức để biết chi tiết.

random.randrange()(Số nguyên của phạm vi và bước tùy ý)

randrange(start, stop, step)
Chức năng của mô-đun ngẫu nhiên này trả về một phần tử được chọn ngẫu nhiên từ các phần tử sau.
range(start, stop, step)

Như với range (), có thể bỏ qua các đối số start và step. Nếu chúng bị bỏ qua, start = 0 và step = 1.

import random

print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(random.randrange(10))
# 5

Bước đối số có thể được đặt để tạo một số nguyên ngẫu nhiên chẵn hoặc lẻ hoặc một số nguyên ngẫu nhiên là bội số của ba.

Ví dụ: nếu start là chẵn và step = 2, chỉ có thể lấy ngẫu nhiên các số nguyên chẵn trong phạm vi.

print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]

print(random.randrange(10, 20, 2))
# 18

random.randint()(Một số nguyên trong bất kỳ phạm vi nào)

randint(a, b)
Hàm của mô-đun ngẫu nhiên này trả về số nguyên ngẫu nhiên sau đây int.
a <= n <= b
randrange(a, b + 1)Tương đương với điều này; lưu ý rằng giá trị của b cũng được bao gồm trong phạm vi.

print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74

Tạo danh sách với các số ngẫu nhiên dưới dạng phần tử

Trong phần này, chúng tôi sẽ giải thích cách sử dụng mô-đun ngẫu nhiên của thư viện chuẩn để tạo danh sách với các số ngẫu nhiên là phần tử.

Danh sách các số ngẫu nhiên có dấu phẩy động

Để tạo danh sách có các phần tử là số ngẫu nhiên dấu phẩy động, hãy kết hợp các hàm ngẫu nhiên () và đồng nhất () với ký hiệu hiểu danh sách.

import random

print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]

Trong ví dụ trên, range () được sử dụng, nhưng cũng có thể sử dụng danh sách và bộ giá trị cho số phần tử mong muốn. Để biết thêm chi tiết về các cách hiểu danh sách, mời các bạn tham khảo bài viết sau.

Danh sách các số nguyên int ngẫu nhiên

Khi tạo danh sách có các phần tử là số nguyên ngẫu nhiên, việc kết hợp randange () và randint () ở trên với ký hiệu hiểu danh sách có thể dẫn đến các giá trị trùng lặp.

print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]

Nếu bạn muốn tạo một chuỗi số nguyên ngẫu nhiên mà không trùng lặp, hãy trích xuất các phần tử của range () với một phạm vi tùy ý bằng cách sử dụng random.sample ().

print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]

print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]

Để biết thêm thông tin về random.sample (), vui lòng tham khảo bài viết sau.

Khởi tạo trình tạo số ngẫu nhiên (sửa hạt giống số ngẫu nhiên)

Bằng cách cung cấp một số nguyên tùy ý cho hạt giống hàm của mô-đun ngẫu nhiên (), hạt giống số ngẫu nhiên có thể được cố định và trình tạo số ngẫu nhiên có thể được khởi tạo.

Sau khi khởi tạo với cùng một hạt giống, giá trị ngẫu nhiên luôn được tạo theo cùng một cách.

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025