29
Mẫu có sẵn

Cùng một seed và cùng cấu hình luôn cho ra đúng dãy số đó. Để trống thì mỗi lần bấm là một kết quả mới, không đoán trước được.

Thống kê của lần tạo này

Nhỏ nhất29
Lớn nhất29
Tổng29
Trung bình29
Trung vị29
Số giá trị có thể ra100

Mọi số được tạo ngay trên máy bạn và không gửi đi đâu. Lịch sử chỉ nằm trong trang này — tải lại là mất.

Cách tính

Một khoảng số không phải là một đoạn liên tục mà là một tập hữu hạn các giá trị có thể ra. Khoảng 1–45 có 45 giá trị; khoảng 0–1 với hai chữ số thập phân có 101 giá trị, vì cả 0 và 1 đều nằm trong đó. Trang này rút một trong những giá trị ấy, chứ không lấy một số thực rồi làm tròn — làm tròn ở bước cuối khiến hai đầu mút chỉ có một nửa cơ hội so với mọi giá trị ở giữa, và đó là lỗi im lặng phổ biến nhất của các bộ tạo số ngẫu nhiên.

Số ngẫu nhiên lấy từ crypto.getRandomValues của trình duyệt, không dùng Math.random. Math.random là bộ sinh giả ngẫu nhiên gieo từ đồng hồ hệ thống: kết quả trông ngẫu nhiên, nhưng người biết nó chạy vào khoảng thời gian nào có thể thu hẹp không gian kết quả. Với một lần quay số trúng thưởng, đó là khác biệt giữa "không ai đoán được" và "người tổ chức đoán được".

Việc quy một số ngẫu nhiên 32 bit về khoảng cần lấy cũng không đơn giản là chia lấy dư. Phép chia dư lệch: khi 2³² không chia hết cho kích thước khoảng, những giá trị ở đầu khoảng xuất hiện nhiều hơn phần còn lại. Trang này loại bỏ những giá trị rơi ngoài bội số chia hết lớn nhất rồi rút lại, nên mọi số trong khoảng có xác suất bằng nhau.

Tuỳ chọn "không lấy trùng" không phải là rút lại mỗi khi gặp số trùng. Cách đó ổn khi lấy 6 số trong 45, nhưng chậm dần đến mức tệ khi lấy 90 số trong 100 — mà đó đúng là lúc người ta cần nó nhất. Ở đây nó là một phép xáo Fisher-Yates chỉ thực hiện đúng số bước cần thiết, nên lấy 900 số trong 1.000 cũng nhanh như lấy 1 số, và mọi hoán vị vẫn có xác suất bằng nhau.

Ô seed đổi nguồn ngẫu nhiên sang một bộ sinh tất định gieo từ đoạn văn bản bạn nhập. Cùng một seed với cùng cấu hình luôn cho ra đúng dãy số đó, trên mọi máy và mọi thời điểm — đó là cách biến một kết quả ngẫu nhiên thành thứ người khác kiểm chứng lại được. Đổi lại, kết quả có seed thì đoán được nếu biết seed, nên đừng dùng nó để sinh bất cứ thứ gì cần bí mật.

Công thức

số giá trị có thể ra = (đến − từ) × 10^(số chữ số thập phân) + 1

Cộng 1 vì cả hai đầu mút đều nằm trong khoảng. Khoảng 1–6 có 6 giá trị chứ không phải 5, và đó là lý do một con xúc xắc có 6 mặt.

Ví dụ

Bốc thăm 6 số trong 45, không trùng:

Số giá trị có thể ra
(45 − 1) × 1 + 1 = 45
Số bộ 6 số khác nhau
C(45,6) = 8.145.060
Xác suất trúng một bộ cụ thể
1 / 8.145.060
Số bước xáo thực hiện
6 (không phải 45)

Đặt thêm một seed, chẳng hạn tên buổi bốc thăm kèm ngày, thì bất kỳ ai mở lại trang với đúng cấu hình ấy cũng nhận được đúng 6 số này — bằng chứng rằng kết quả không bị sửa sau khi đã công bố.

Câu hỏi thường gặp

Số ở đây có thật sự ngẫu nhiên không?

Khi ô seed để trống thì có: nguồn là crypto.getRandomValues, cùng nguồn mà trình duyệt dùng để sinh khoá mã hoá, và không ai đoán trước được. Khi bạn nhập seed thì kết quả là tất định — vẫn phân bố đều, nhưng ai biết seed cũng tính lại được. Đó là điều bạn chủ động đổi lấy khả năng kiểm chứng.

Seed dùng để làm gì?

Để người khác lấy lại đúng kết quả của bạn. Công bố seed và cấu hình trước khi quay, rồi ai cũng có thể tự chạy lại và thấy ra đúng dãy số đó — không cần tin bạn. Nút "Chia sẻ cấu hình" tạo sẵn liên kết mang theo cả khoảng, số lượng và seed.

Hai đầu mút có nằm trong khoảng không?

Có. Khoảng 1–10 rút ra được cả 1 lẫn 10, mỗi số đúng 1/10 cơ hội như tám số còn lại. Ô "Số giá trị có thể ra" trong phần thống kê là cách kiểm tra nhanh: 1–10 phải hiện 10, không phải 9.

Lấy được nhiều nhất bao nhiêu số một lần?

1.000 số mỗi lần tạo, trong khoảng từ −1.000.000.000 đến 1.000.000.000. Nếu bật "không lấy trùng" mà khoảng không đủ số khác nhau, số lượng sẽ tự giảm xuống bằng số giá trị có thể ra và trang báo lại cho bạn thay vì lặng lẽ trả về ít hơn.

Vì sao số thập phân bị giảm bớt chữ số?

Vì khoảng quá rộng so với độ chính xác yêu cầu. Khoảng rộng một tỷ với sáu chữ số thập phân là 10¹⁵ giá trị khác nhau, nhiều hơn mức bộ rút số này địa chỉ hoá được. Khoảng là thứ bạn yêu cầu nên nó được giữ nguyên; phần thập phân là thứ được giảm, và trang nói rõ khi điều đó xảy ra.

Vì sao kết quả sao chép ra dùng dấu chấm thập phân?

Vì dãy số đó thường được dán vào bảng tính, tin nhắn hay đoạn mã, và "1.234,5" bị mọi thứ vừa kể đọc thành một thứ khác. Phần hiển thị trên trang và phần sao chép đều dùng dấu chấm, không có dấu phân cách hàng nghìn, để dán đi đâu cũng ra đúng con số.

Tôi dùng trang này để sinh mật khẩu hay mã OTP được không?

Không nên. Khi để trống seed thì nguồn đủ mạnh, nhưng một dãy chữ số vẫn là mật khẩu yếu, và một mã có seed thì bất kỳ ai biết seed cũng sinh lại được. Cần mật khẩu thì dùng trang tạo mật khẩu — nó có cả bảng ký tự đầy đủ lẫn số bit entropy để bạn biết mình đang có gì.

Số có được gửi lên máy chủ không?

Không. Mọi thứ chạy trong trình duyệt của bạn. Lịch sử các lần tạo chỉ nằm trong bộ nhớ của trang — tải lại là mất, và không có gì được ghi vào máy bạn hay gửi đi đâu.

Nguồn tham khảo

Báo lỗi cho quản trị viênThấy kết quả sai, số liệu đã lỗi thời hay lỗi hiển thị? Gửi báo cáo ngay tại đây. Đường dẫn trang và tên công cụ được đính kèm sẵn, bạn chỉ cần mô tả vấn đề.

Báo lỗi cho quản trị viên

Mô tả càng cụ thể càng nhanh sửa: bạn đã nhập gì, kết quả nhận được và kết quả bạn cho là đúng.

Vấn đề thuộc loại nào?
0/2000

Chỉ dùng để trả lời bạn, không dùng vào việc gì khác.

Gửi kèm báo cáo

Trang
/tao-so-ngau-nhien
Công cụ
Tạo số ngẫu nhiên
Ngôn ngữ
Tiếng Việt

Các giá trị bạn nhập trong công cụ không được gửi đi. Ngoài những thông tin dưới đây, máy chủ ghi lại loại trình duyệt và dùng địa chỉ IP để giới hạn tần suất gửi — chi tiết ở trang Chính sách bảo mật.