1. Mọi kết quả đến từ bộ sinh ngẫu nhiên mật mã
Spinvolta bốc kết quả bằng crypto.getRandomValues(), bộ sinh số ngẫu nhiên an toàn mật mã có sẵn trong mọi trình duyệt và hệ điều hành hiện đại — cùng nguồn dùng để tạo khóa mã hóa. Chúng tôi không bao giờ dùng Math.random() để quyết định bất cứ điều gì. (Những thứ thuần trang trí, như mảnh pháo giấy bay hướng nào, thì có thể dùng.)
2. Không thiên lệch modulo
Một số ngẫu nhiên 32 bit không phải lúc nào cũng chia đều cho, giả sử, 7 lựa chọn: 4.294.967.296 không chia hết cho 7, nên cách ngây thơ number % 7 khiến một số lựa chọn dễ trúng hơn một chút. Spinvolta dùng lấy mẫu loại bỏ: nếu số rơi vào phần dư không đều ở đầu khoảng, nó bị bỏ và bốc số mới. Nhờ đó mỗi lựa chọn có khả năng chính xác như nhau, với bất kỳ số lựa chọn nào.
3. Trọng số chính xác
Ở chế độ trọng số, các giá trị như 1, 2,5 hay 0,125 được đổi thành số nguyên trên cùng thang đo và cộng chính xác. Một lần bốc đều trên tổng sẽ chọn người thắng, nên lựa chọn trọng số 2 có khả năng đúng gấp đôi lựa chọn trọng số 1 — và kích thước ô trên vòng quay thể hiện chính xác xác suất đó.
4. Nhiều người thắng không lặp lại
Nhiều người thắng, chia đội, thứ tự ngẫu nhiên, xáo bài và giveaway dùng thuật toán Fisher–Yates không thiên lệch (với cùng kỹ thuật lấy mẫu loại bỏ), nên mọi thứ tự hoặc nhóm người thắng có thể đều có khả năng như nhau.
5. Kết quả trước, hoạt ảnh sau
Khi bạn nhấn Quay, người thắng được quyết định trước khi vòng quay chuyển động. Sau đó bộ giải tính toán chuyển động — lấy đà, tốc độ, số vòng, cú lắc nhẹ cuối — để dừng chính xác trong ô thắng, tại một điểm ngẫu nhiên cách xa mép. Vuốt mạnh hơn, chọn quay lâu hơn hay dừng thủ công chỉ thay đổi cách hiển thị. Bộ kiểm thử tự động của chúng tôi kiểm tra hàng nghìn lượt quay ngẫu nhiên để chắc chắn hoạt ảnh luôn dừng ở kết quả đã bốc sẵn và không bao giờ trượt sang ô bên cạnh.
6. Bốc thăm công bằng có thể chứng minh cho giveaway và phòng
Với giveaway (và mọi lần bốc cần sự tin tưởng), Spinvolta tiến thêm một bước để bạn không cần tin chúng tôi hay chủ phòng:
- Trước khi bốc, trình duyệt của bạn khóa danh sách và cài đặt, rồi công bố dấu vân tay — mã băm SHA-256 của danh sách, cài đặt và một hạt giống bí mật. Máy chủ của chúng tôi ghi lại thời điểm nhận được.
- Dấu vân tay chỉ định một vòng tương lai của nguồn ngẫu nhiên drand League of Entropy — giá trị công khai được các tổ chức độc lập trên khắp thế giới tạo ra mỗi 3 giây, không ai đoán trước hay lựa chọn được.
- Khi vòng đó được công bố, người thắng được tính từ dấu vân tay, giá trị drand và hạt giống.
- Trang bằng chứng hiển thị mọi thứ. Ai cũng có thể nhấn Xác minh để tự tính lại trong trình duyệt, bao gồm kiểm tra chữ ký mật mã của drand.
Chủ phòng không thể chọn người thắng vì giá trị drand chưa tồn tại khi danh sách bị khóa. Chúng tôi cũng không thể, vì chúng tôi không thấy hạt giống trước khi dấu vân tay được khóa và không kiểm soát drand. Nếu không kết nối được drand, buổi bốc chuyển sang chế độ cam kết – công bố được ghi nhãn rõ ràng.
7. Kiểm định bằng thống kê
Bộ kiểm thử của chúng tôi chạy kiểm định khi bình phương trên hàng trăm nghìn lần bốc mô phỏng sau mỗi thay đổi, và trên hơn một triệu lần trong bộ đầy đủ: chọn đều, chọn theo trọng số, xáo trộn và vị trí khi nhiều người thắng. Bạn có thể tự chạy phiên bản của mình tại trang kiểm tra công bằng.
Điều chúng tôi không thể chứng minh
Với lượt quay thường ngày, bạn tin rằng mã chạy trong trình duyệt chính là mã chúng tôi mô tả. Mã chạy hoàn toàn trên thiết bị của bạn và bạn có thể xem bằng công cụ dành cho nhà phát triển của trình duyệt. Khi việc hệ trọng hơn — giải thưởng, bốc thăm công khai — hãy dùng bốc thăm công bằng có thể chứng minh, không cần tin tưởng bất kỳ ai.
Câu hỏi thường gặp
Vòng quay có thể bị gian lận không?
Không thông qua hoạt ảnh: kết quả được bốc công bằng trước và chuyển động được giải để hiển thị nó. Cách duy nhất để đổi xác suất là chế độ trọng số, có hiện nhãn “Vòng quay có trọng số” và vẽ kích thước ô tương ứng.
Vì sao một tên ra hai lần liên tiếp?
Vì ngẫu nhiên thật sự có những chuỗi lặp. Với 10 lựa chọn, cùng một lựa chọn ra hai lần liên tiếp 10% số lần. Dùng chế độ loại trừ nếu bạn muốn mỗi lựa chọn chỉ ra một lần.
drand là gì?
drand là nguồn ngẫu nhiên phân tán do League of Entropy vận hành — một nhóm trường đại học, công ty và tổ chức độc lập. Nó công bố một giá trị ngẫu nhiên mới có thể xác minh sau mỗi vài giây.