Menu
CoddyTech

Số ngẫu nhiên

Thuộc phần Dữ liệu và biểu đồ trong hành trình Machine Learning của Coddy. Bài học 18 trên 60.

Mô phỏng, dữ liệu được xáo trộn và mô hình chưa được huấn luyện đều bắt đầu từ các số ngẫu nhiên. Một dòng lệnh đã tạo ra 1.000 chiều cao giả định này:

Biểu đồ tần suất của 1.000 chiều cao ngẫu nhiên có hình chuông, cao nhất quanh giá trị trung bình 170 cm và thấp dần về phía 140 và 200

NumPy lấy chúng từ một bộ tạo số ngẫu nhiên (generator), được khởi tạo bằng một hạt giống (seed):

rng = np.random.default_rng(42)
heights = rng.normal(170, 10, size=1000)
print(np.round(heights[:4], 1))
print(rng.integers(1, 7, size=5))
print(np.round(rng.random(3), 2))

Kết quả in ra là:

[173.  159.6 177.5 179.4]
[2 4 3 3 5]
[0.44 0.13 0.09]

normal(mean, std, size) tập trung quanh giá trị trung bình. integers không bao gồm giá trị kết thúc, giống như range. random cho ra các số thập phân từ 0 đến 1.

Cùng một seed sẽ tạo ra cùng các con số trên mọi máy tính, nhờ đó bất kỳ ai cũng có thể lặp lại thí nghiệm của bạn. Mỗi lần lấy số sẽ đưa bộ tạo số tiến lên.

challenge icon

Thử thách

Dễ

Một cửa hàng mô phỏng một tuần mà lần chạy lại phải tái tạo.

  1. Tạo rng_a từ seed và lấy 7 số lượng khách hàng, từ 20 đến 60 inclusive, sau đó lấy 7 mức chi tiêu theo phân phối chuẩn: trung bình 15, độ lệch chuẩn 4.
  2. Lấy lại số lượng khách hàng từ rng_b với cùng seed và từ rng_c với seed cộng 1.
  3. In ra như bên dưới: mức chi tiêu với 1 chữ số thập phân và số ngày mà b và c khớp với a.

Với seed 12:

Customers: [45 30 59 58 22 27 28]
Spend: [21.5 10.2 12.5  9.7 14.6 19.  14.9]
Same seed, days that match: 7
Seed + 1, days that match: 1

Tự làm thử

import numpy as np

seed = int(input())

# Viết code của bạn bên dưới
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Dữ liệu và biểu đồ

Tự luyện tập: Trình biên dịch Python online