Chúng tôi đang gặp khó khăn trong việc tải các tài nguyên bên ngoài có trên trang web.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

Nội dung chính

Phân phối chuẩn của các số ngẫu nhiên

Giả sử chúng ta muốn lập trình một chương trình có nhiệm vụ tạo ra một bầy khỉ. Khi đó, ta sẽ tạo ra hàng ngàn đối tượng "Monkey" (khỉ), mỗi đối tượng có giá trị chiều cao trong khoảng từ 200 đến 300 pixel:
var randomHeight = random(200, 300);
Giá trị chiều cao này có mô tả chính xác chiều cao trong thực tế không? Giả sử chúng ta đang đi trên đường và chọn bất kỳ một người. Khi đó, chiều cao của người được chọn có vẻ là ngẫu nhiên. Tuy nhiên, đó không phải là kiểu ngẫu nhiên mà hàm random() tạo ra. Chiều cao của con người được phân phối không đồng đều, số lượng người có chiều cao trung bình nhiều hơn số lượng người rất cao hoặc rất thấp. Để mô phỏng tự nhiên, ta cần nhiều hơn những chú khỉ có chiều cao trung bình (250 pixel) và đôi khi cũng có thêm các chú khỉ rất cao hoặc rất thấp.
Phân phối giá trị tập trung quanh mức trung bình (hay còn gọi là “số trung bình cộng") được gọi là “phân phối chuẩn”. Phân phối này còn có những tên gọi khác như phân phối Gaussian (theo tên nhà toán học Carl Friedrich Gauss) hay phân phối Laplacian (theo tên nhà toán học Pierre-Simon Laplace). Cả hai nhà toán học đã định nghĩa kiểu phân phối này một cách độc lập vào đầu thế kỷ 19.
Đồ thị phân phối sẽ có hình dạng như dưới đây, hay còn được gọi là đường cong hình chuông:
Đường cong hình chuông chuẩn
Đường cong hình chuông được tạo bởi một hàm toán học xác định xác suất của bất kỳ giá trị nào xảy ra dưới dạng hàm của số trung bình cộng (ký hiệu là μ, đọc là mu) và độ lệch chuẩn (ký hiệu là σ, đọc là sigma).
Số trung bình cộng là khái niệm khá dễ hiểu. Trong trường hợp giá trị chiều cao nằm trong khoảng từ 200 đến 300, ta có thể nhẩm được số trung bình cộng là 250. Tuy nhiên, với độ lệch chuẩn là 3 hoặc 15 thì sao? Các con số này có ý nghĩa gì? Biểu đồ trên biểu diễn phân phối có độ lệch chuẩn rất thấp, trong đó phần lớn các giá trị tập trung xung quanh số trung bình cộng. Biểu đồ dưới đây biểu diễn phân phối có độ lệch chuẩn cao hơn, trong đó các giá trị phân bố xa giá trị trung bình hơn:
Đường cong hình chuông có độ lệch chuẩn cao hơn
Nếu bạn muốn tìm hiểu thêm về khái niệm "độ lệch chuẩn", bạn có thể xem bài Phương sai và độ lệch chuẩn trên Khan Academy trước khi tiếp tục bài học này.
Các con số có ý nghĩa như sau: Trong một tổng thể, 60% cá thể của tổng thể đó sẽ có giá trị nằm trong khoảng một độ lệch chuẩn so với số trung bình cộng, 95% nằm trong khoảng hai độ lệch chuẩn và 99,7% nằm trong khoảng ba độ lệch chuẩn. Nếu độ lệch chuẩn là 5 pixel, 0,3% số khỉ có chiều cao thấp hơn 235 pixel (ba độ lệch chuẩn dưới số trung bình cộng là 250) hoặc cao hơn 265 pixel (ba độ lệch chuẩn trên số trung bình cộng là 250).
Tính số trung bình cộng và độ lệch chuẩn
Cho một lớp học gồm mười học sinh và điểm số bài kiểm tra của học sinh (thang điểm 100) như sau:
85, 82, 88, 86, 85, 93, 98, 40, 73, 83
Chúng ta tính số trung bình cộng bằng cách lấy tổng điểm chia cho số lượng điểm.
Số trung bình cộng = (85+82+88+86+85+93+98+40+73+83)/10=81,3
Để tính độ lệch chuẩn, đầu tiên ta tính bình phương của độ lệch quanh số trung bình cộng, sau đó tính trung bình của các bình phương đó rồi lấy căn bậc hai.
Như vậy, đầu tiên ta sẽ tính độ lệch của từng điểm số so với số trung bình cộng và bình phương của các độ lệch đó:
ĐiểmĐộ lệchĐộ lệch bình phương
858581,3=3,73,72=13,69
828281,3=0,70,72=0,49
888881,3=6,76,72=44,89
868681,3=4,74,72=22,09
858581,3=3,73,72=13,69
939381,3=11,711,72=136,89
989881,3=16,716,72=278,89
404081,3=41,3(41,3)2=1705,69
737381,3=8,3(8,3)2=68,89
838381,3=1,71,72=2,89
Sau đó, ta tính trung bình cộng của các độ lệch bình phương, hay còn gọi là phương sai, chính là tổng của cột cuối cùng chia cho số hàng:
Phương sai = 2288,1/10 = 228,81
Cuối cùng, ta tính độ lệch chuẩn bằng cách tính căn bậc hai của phương sai:
Độ lệch chuẩn = 228,81 = 15,13
Nếu muốn tìm hiểu thêm về độ lệch chuẩn, bạn có thể xem kỹ hơn bài Phương sai và độ lệch chuẩn của Khan Academy.
Để sử dụng phân phối chuẩn các số ngẫu nhiên trong một chương trình trên Khan Academy, chúng ta không cần phải tự tính các phép tính trên. Thay vào đó, ta chỉ cần sử dụng kiểu đối tượng Random do thư viện ProcessingJS cung cấp.
Để tận dụng kiểu đối tượng Random, trước hết, ta phải khởi tạo một đối tượng Random mới và truyền vào 1 làm tham số. Chúng ta gọi biến này là "generator" bởi vì những gì chúng ta tạo ra về cơ bản có thể được coi là trình tạo số ngẫu nhiên.
var generator = new Random(1);
Nếu muốn tạo một số ngẫu nhiên thuộc phân phối chuẩn mỗi khi chạy hàm draw(), ta gọi phương thức nextGaussian() như sau:
var num = generator.nextGaussian();
println(num);
Về mặt chức năng, ta có thể sử dụng hàm này để gán tọa độ x cho một hình mà ta muốn vẽ trên màn hình.
Hàm nextGaussian() trả về các số ngẫu nhiên thuộc phân phối chuẩn có số trung bình cộng bằng 0độ lệch chuẩn bằng 1. Giả sử ta muốn số trung bình cộng bằng 200 (là pixel nằm chính giữa theo chiều ngang trong khung kết quả có chiều rộng là 400) và độ lệch chuẩn 60 pixel. Khi đó ta có thể điều chỉnh giá trị theo các thông số bằng cách nhân giá trị với độ lệch chuẩn và cộng với số trung bình.
var standardDeviation = 60;
var mean = 200;
var x = standardDeviation * num + mean;
Đến đây, ta đã có những "nguyên liệu" cần thiết để lập trình chương trình vẽ các hình tròn mờ ứng dụng phân phối chuẩn. Hình tròn đậm nhất sẽ ở gần tâm vị trí tập trung hầu hết các cụm giá trị nhưng đôi khi cũng được vẽ xa hơn về bên trái hoặc bên phải.
Khóa học "Mô phỏng tự nhiên" này được biên soạn dựa trên cuốn "The Nature of Code" (tạm dịch: Bản chất của lập trình) của tác giả Daniel Shiffman, được sử dụng theo giấy phép Creative Commons Attribution-NonCommercial 3.0 Unported License.

Tham gia cuộc thảo luận?

Chưa có bài đăng nào.
Bạn có hiểu Tiếng Anh không? Bấm vào đây để thấy thêm các thảo luận trên trang Khan Academy Tiếng Anh.