Ngẫu nhiên là các đại lượng không được chỉ định trước, thay vào đó chúng lại là những thứ gì đó không thể dự đoán theo một cách logic. Số ngẫu nhiên còn là một thuật ngữ được sử dụng trong toán học (và ít chính thức) có nghĩa là không có cách nào để dự đoán đáng tin cậy một kết quả (để biết điều gì sẽ xảy ra trước khi nó xảy ra) hoặc phán đoán một khuôn mẫu. Ví dụ về một sự kiện ngẫu nhiên là chiến thắng xổ số.

1. Giả ngẫu nhiên trong máy tính

Máy tính hoạt động dựa trên các chương trình, và các chương trình là tập hợp các câu lệnh được lập trình chính xác. Vì vậy, nó có nghĩa là phải có một số thuật toán để tạo ra một số ngẫu nhiên.

Máy tính có thể tạo số ngẫu nhiên và trong máy tính có nhiều thuật toán khác nhau để tạo số ngẫu nhiên. Điều này làm cho việc tạo mẫu một khía cạnh nhất định của sự ngẫu nhiên khả thi, ví dụ như sự phân phối của các con số được tạo ra. Số được tạo ra theo kiểu như vậy tuy nhiên sẽ luôn luôn theo một khuôn mẫu. Cho trước một, hoặc một vài trong số các số đó, một máy tính có thể tính toán và phán đoán và tạo ra số ngẫu nhiên tiếp theo. Vì vậy, con số này được gọi là giả ngẫu nhiên.

Trong bài viết về “Numpy Random “ chúng ta sẽ sử dụng thư viện Numpy và làm việc dựa trên các số giả ngẫu nhiên trong máy tính.

2. Tạo số ngẫu nhiên trong Numpy

Numpy là thư viện sử xứ lý số học mạnh mẽ và hỗ trợ nhiều các lớp hay phương thức có sẵn để thực hiện các tính toán, dự đoán…. ngoài ra Numpy cũng hỗ trợ trong việc thao tác với các số ngẫu nhiên. Bằng cách chúng ta sẽ nhập vào mô-đun random trong thư viện Numpy thì chúng ta hoàn toàn có thể thao tác với các số ngẫu nhiên.

from numpy import random

Sau khi mô-đun random trong thư viện Numpy được thêm vào chương trình, chúng ta có thể sử dụng các hàm tạo số ngẫu nhiên, tạo mảng ngẫu nhiên….

2.1 Tạo số ngẫu nhiên bằng random.randint()

Hàm random.randint() được sử dụng để tạo ra và trả về một số ngẫu nhiên trong một khoảng bắt đầu đến khoảng kết thúc được chỉ định. Hàm này sẽ chỉ tạo ra một số ngẫu nhiên mang giá trị kiểu số nguyên (int)

Ví dụ dưới đây, chúng tôi sử dụng hàm random.randint() để tạo một số nguyên ngẫu nhiên có giá trị trong khoảng từ 0 đến 100 như sau:

from numpy import random

# Tao mot so ngau nhien trong khoang tu 0 den 100
x = random.randint(100)

# Hien thi ket qua
print("So ngau nhien vua tao la:",x)

Kết quả:

So ngau nhien vua tao la: 15

Lưu ý: Khi chương trình trên được thực thi lại, một số ngẫu nhiên khác sẽ được tạo ra.

2.2 Tạo số ngẫu nhiên bằng random.rand()

Hàm random.rand() được sử dụng để tạo ra và trả về một số ngẫu nhiên trong một khoảng 0 đến 1. Hàm này sẽ chỉ tạo ra một số ngẫu nhiên mang giá trị kiểu số thực (float)

Ví dụ dưới đây, chúng tôi sử dụng hàm random.rand() để tạo một số nguyên ngẫu nhiên có giá trị trong khoảng 0 đến 1 như sau:

from numpy import random

# Tao mot so ngau nhien trong khoang tu 0 den 1
x = random.rand()

# Hien thi ket qua
print("So ngau nhien vua tao la:",x)

Kết quả:

So ngau nhien vua tao la: 0.15073286079638193

2.3 Tạo số ngẫu nhiên bằng random.choice()

Chúng ta hoàn toàn có thể tạo ra một số ngẫu nhiên trong tập hợp các số được chỉ định sẵn. Hàm random.choice() được sử dụng để tạo ra một số ngẫu nhiên thuộc trong các số có sẵn.

Ví dụ dưới đây, tạo ra một số ngẫu nhiên thuộc trong các số [2, 4, 6, 8] bằng cách sử dụng hàm random.choice() như sau:

from numpy import random

# Tao so ngau nhien thuoc trong cac so co san
x = random.choice([2, 4, 6, 8])

# Hien thi ket qua
print(x)

Kết quả:

8

3. Tạo mảng ngẫu nhiên trong Numpy

Một mảng trong Numpy cũng có thể được khởi tạo dựa theo số ngẫu nhiên. Khái niệm tạo mảng ngẫu nhiên ám chỉ đển việc các phần tử trong mảng sẽ không được chỉ định mà thay vào đó các phần tử này sẽ được tạo ra từ các con số ngẫu nhiên.

3.1 Tạo mảng ngẫu nhiên bằng random.randint()

Hàm random.randint() cũng được sử dụng để tạo ra một mảng gồm các phần tử ngẫu nhiên bằng cách truyền thêm tham số size vào hàm này.

Các phần tử ngẫu nhiên trong mảng sau khi được tạo sẽ là các số ngẫu nhiên trong khoảng bắt đầu đến khoảng kết thúc và mang kiểu dữ liệu số nguyên (int)

Ví dụ dưới đây, tạo ra một mảng 1 chiều với  5 phần tử và các phần tử là ngẫu nhiên trong khoảng từ 0 đến 100 bằng cách sử dụng hàm random.randint() với tham số size = (5) như sau:

from numpy import random

# Tao mang 1 chieu, 5 phan tu mang gia tri ngau nhien tu 0 den 100
x = random.randint(100, size=(5))

# Hien thi mang
print("Mang 1 chieu ngau nhien")
print(x)

Kết quả:

Mang 1 chieu ngau nhien
[96 24 53 16 26]

Ví dụ tiếp theo, tạo mảng 2 chiều có kích thước 3 x 5 với các phần tử mang giá trị ngẫu nhiên từ 0 đến 100 bằng cách sử dụng hàm random.randint() với tham số size = (3,5) như sau:

from numpy import random

# Tao mang 2 chieu, 3 x 5 phan tu mang gia tri ngau nhien tu 0 den 100
x = random.randint(100, size=(3, 5))

# Hien thi mang
print("Mang 2 chieu ngau nhien")
print(x)

Kết quả:

Mang 2 chieu ngau nhien
[[43  7 17 22 84]
 [43 14 57 41 43]
 [64 11 88 90 74]]

Lưu ý: Khi chương trình trên được thực thi lại, một mảng ngẫu nhiên khác sẽ được tạo ra.

3.2 Tạo mảng ngẫu nhiên bằng random.rand()

Hàm random.rand() cũng được sử dụng để tạo ra một mảng gồm các phần tử ngẫu nhiên bằng cách chỉ định kích thước mảng cần tạo.

Các phần tử ngẫu nhiên trong mảng sau khi được tạo sẽ là các số ngẫu nhiên trong khoảng 0 đến 1 và mang kiểu dữ liệu số thực (float)

Ví dụ dưới đây, tạo ra một mảng 1 chiều với  5 phần tử và các phần tử là ngẫu nhiên trong khoảng từ 0 đến 1 bằng cách sử dụng hàm random.rand() như sau:

from numpy import random

# Tao mang 1 chieu, 5 phan tu mang gia tri ngau nhien tu 0 den 1
x = random.rand(5)

# Hien thi mang
print("Mang 1 chieu ngau nhien")
print(x)

Kết quả:

Mang 1 chieu ngau nhien
[0.35192473 0.8793414  0.90426437 0.91279675 0.89189297]

Ví dụ tiếp theo, tạo ra một mảng 2 chiều với  kích thước 3 x 5 và các phần tử là ngẫu nhiên trong khoảng từ 0 đến 1 bằng cách sử dụng hàm random.rand() như sau:

from numpy import random

# Tao mang 2 chieu,3 x 5 phan tu mang gia tri ngau nhien tu 0 den 1
x = random.rand(3,5)

# Hien thi mang
print("Mang 2 chieu ngau nhien")
print(x)

Kết quả:

Mang 2 chieu ngau nhien
[[0.08527629 0.71206516 0.38212619 0.76420817 0.28264668]
 [0.32623299 0.35296972 0.52774745 0.70747659 0.35365233]
 [0.1180172  0.88088691 0.61464382 0.59652066 0.99691497]]

3.3 Tạo mảng ngẫu nhiên bằng random.choice()

Giả sử chúng ta cần tạo ra một mảng ngẫu nhiên trong một vài số có sẵn được chỉ định. Khi đó ta sẽ cần sử dụng hàm random.choice() và truyền vào tham số size – hàm nãy sẽ tạo ra một mảng ngẫu nhiên từ các số có sẵn.

Ví dụ dưới đây, sử dụng hàm random.choice() để tạo mảng 2 chiều kích thước 3 x 5 với các phần tử là ngẫu nhiên thuộc trong các giá trị có sẵn [3, 5, 7, 9] như sau:

from numpy import random

# Tao mang 2 chieu ngau nhien tu so co san
x = random.choice([3, 5, 7, 9], size=(3, 5))

# Hien thi mang
print("Mang hai chieu ngau nhien")
print(x)

Kết quả:

Mang hai chieu ngau nhien
[[5 3 3 7 7]
 [9 9 5 9 3]
 [7 5 7 3 9]]