https://iili.io/2AK2cHG.png

Du Mã

Luật Số Lớn: Quy luật trong cái ngẫu nhiên

Hãy tưởng tượng bạn đang tung một đồng xu hoàn toàn cân bằng. Kết quả của mỗi lần tung là ngẫu nhiên, không ai có thể đoán trước. Lần 1 có thể là Ngửa, lần 2 cũng có thể là Ngửa, và không có gì ngăn cản việc bạn tung được 5 lần Ngửa liên tiếp. Sự ngẫu nhiên ở quy mô nhỏ luôn đầy rẫy sự bất ngờ.

Nhưng điều gì sẽ xảy ra nếu bạn tung đồng xu đó 1.000 lần, hay 10.000 lần?

Sinh số ngẫu nhiên

Trong mô phỏng, máy tính thường dùng các thuật toán xác định để sinh số giả ngẫu nhiên (pseudo-random numbers). Nhiều phương pháp Monte Carlo bắt đầu từ các giá trị mô phỏng phân phối đều trên khoảng $[0,1]$, ký hiệu $U\sim\text{Uniform}(0,1)$. Linear Congruential Generator là một ví dụ lịch sử đơn giản; các thư viện hiện đại thường dùng những bộ sinh có chất lượng thống kê tốt hơn.

Histogram

Khi có trong tay một tập dữ liệu mới, điều đầu tiên chúng ta muốn biết thường là: Dữ liệu này phân bố như thế nào? Chỗ nào tập trung đông nhất? Có giá trị nào quá khác biệt (outlier) không?

Để trả lời nhanh chóng những câu hỏi này, Biểu đồ tần suất (Histogram) chính là công cụ phổ biến và trực quan nhất.

1. Histogram là gì?

Khác với biểu đồ cột (Bar chart) dùng để đếm các danh mục rời rạc (ví dụ: số người thích màu Đỏ, Xanh, Vàng), Histogram dùng để hiển thị sự phân bố của một biến liên tục (như chiều cao, cân nặng, hoặc điểm số).

Biểu đồ Q-Q

Trong hành trình phân tích dữ liệu và thống kê, một trong những bước quan trọng đầu tiên là kiểm tra xem dữ liệu của chúng ta có tuân theo một phân phối lý thuyết nào đó hay không. Trong đại đa số trường hợp, chúng ta thường kỳ vọng dữ liệu của mình mang hình dáng của phân phối chuẩn (Normal distribution). Lý do là bởi hầu hết các mô hình thống kê, từ học máy cơ bản, hồi quy tuyến tính cho đến các kiểm định giả thuyết quen thuộc (như t-test, ANOVA), đều được xây dựng dựa trên giả định nền tảng rằng sai số hoặc bản thân dữ liệu phải xấp xỉ chuẩn.

Tổng quan về sinh số ngẫu nhiên: từ entropy đến PRNG và CSPRNG

1. “Số ngẫu nhiên” có thể đến từ hai nơi

Khi một chương trình yêu cầu số ngẫu nhiên, có hai công việc rất khác nhau có thể đang diễn ra:

  1. Thu nhận entropy từ thế giới thực: đo một hiện tượng khó dự đoán như nhiễu điện tử hoặc độ lệch thời gian của các sự kiện hệ thống.
  2. Mở rộng một trạng thái hữu hạn bằng thuật toán tất định: từ một seed ngắn, sinh nhanh một luồng bit dài có tính chất thống kê hoặc tính chất mật mã mong muốn.

Hệ điều hành hiện đại thường kết hợp cả hai. Nó gom các tín hiệu khó dự đoán, kiểm tra và trộn chúng thành seed; sau đó một bộ sinh số giả ngẫu nhiên an toàn mật mã (cryptographically secure pseudorandom number generator, CSPRNG) mở rộng seed đó thành lượng dữ liệu lớn. Vì vậy, “ngẫu nhiên vật lý” và “PRNG tất định” không nhất thiết là hai lựa chọn loại trừ nhau: nhánh thứ nhất thường nuôi seed và reseed cho nhánh thứ hai.

Từ LCG đến PCG64DXSM: trạng thái, hoán vị và sinh số song song

1. Vì sao cần đi xa hơn LCG?

Trong bức tranh tổng quan về sinh số ngẫu nhiên, PCG thuộc nhánh PRNG tất định, tối ưu cho mô phỏng nhanh và có thể tái lập. Bài này phóng to riêng nhánh đó để theo dõi các quyết định thiết kế dẫn tới PCG64DXSM.

Trong bài Bộ sinh số giả ngẫu nhiên LCG, ta bắt đầu với hệ thức rất gọn:

$$ X_{n+1}=(aX_n+c)\bmod m. $$

LCG hấp dẫn vì nhanh, ít trạng thái và dễ nhảy tới một vị trí xa trong chuỗi. Nhưng nếu xuất thẳng $X_n$, ta cũng để lộ gần như nguyên vẹn cấu trúc tuyến tính đã sinh ra nó: các bit thấp có thể có chu kỳ ngắn, còn những bộ số liên tiếp tạo thành mạng lưới trong không gian nhiều chiều.

Đang tải thêm bài viết...