Bắt đầu từ đâu
Hãy đọc bài viết trình tạo số ngẫu nhiên là gì: phần cứng, các trình tạo giả ngẫu nhiên và an toàn về mặt mật mã, tại sao các con số lại lặp lại và những gì trình duyệt có thể đáp ứng. Khi bạn cần số thay vì lời giải thích, trình tạo số ngẫu nhiên sẽ tạo chúng ngay trong trình duyệt của bạn theo bất kỳ phạm vi nào, có hoặc không có sự lặp lại.
Những lỗi sai tiềm ẩn của trình tạo
Một nguồn ngẫu nhiên mạnh mới chỉ hoàn thành một nửa công việc. Nửa còn lại là chuyển đổi các giá trị thô đó sang phạm vi bạn cần, và đó là nơi nhiều trình tạo tự lập trình gặp thất bại. Lấy một giá trị chia lấy dư (modulo) cho kích thước của phạm vi là cách tiếp cận trực quan, nhưng nó dẫn đến sự lệch ngẫu nhiên tinh vi: trừ khi kích thước của phạm vi chia hết cho không gian kết quả của nguồn, các số nhỏ nhất trong phạm vi sẽ xuất hiện thường xuyên hơn một chút so với các số còn lại. Thiếu sót này được gọi là độ lệch modulo (modulo bias). Một cách khắc phục là lấy mẫu loại trừ (rejection sampling): loại bỏ những giá trị rơi vào phần dư không đồng đều và rút lại. Trình tạo của chúng tôi làm theo cách này, vì vậy mọi số trong phạm vi của bạn đều có cơ hội như nhau trong mỗi lần tạo.
Lập luận tương tự cũng loại bỏ những đường tắt mà mọi người thường tìm đến đầu tiên. Math.random() không đưa ra cam kết nào về tính bảo mật, và các hàm bảng tính như RAND() cùng RANDBETWEEN() cũng thuộc cùng nhóm đó: phù hợp cho việc xáo trộn sơ bộ, nhưng không phù hợp cho bất kỳ việc gì có thể bị khiếu nại.
Số, danh sách và xúc xắc
Trình tạo số ngẫu nhiên trả về các con số từ phạm vi do bạn thiết lập. Công cụ chọn ngẫu nhiên hoạt động trên danh sách bạn dán vào — tên gọi, mục dự thi, các lựa chọn — giúp bạn không bao giờ phải ghép thủ công các con số với từng dòng. Đối với board game, công cụ đổ xúc xắc sẽ gieo xúc xắc và cộng tổng số điểm, còn khi cần chọn giữa hai phương án thì tung đồng xu là đủ. Khi tính ngẫu nhiên cần dùng để bảo vệ một thứ gì đó thay vì đưa ra quyết định, hãy sử dụng trình tạo mật khẩu mạnh. Tất cả những công cụ này đều khai thác cùng một nguồn an toàn về mặt mật mã ngay trong trình duyệt của bạn.