กลไกการสุ่มทำงานอย่างไร
ไม่ใช่แค่คำพูดลอยๆ ว่า "เชื่อเราเถอะ มันสุ่มจริงๆ" แต่นี่คือวิธีที่เราใช้
ผู้ชนะถูกเลือกตั้งแต่ก่อนวงล้อเริ่มหมุน
การหมุนทุกครั้งจะเลือกผู้ชนะก่อนเสมอ แล้วจึงกำหนดแอนิเมชันให้หมุนไปยังตำแหน่งนั้น ลำดับขั้นตอนนี้ทำให้ความแรงในการปัดหน้าจอไม่มีผลต่อการเปลี่ยนผลลัพธ์ และทำให้การเปิดโหมดลดการเคลื่อนไหว (reduced motion) ยังคงให้ผลลัพธ์เดียวกันโดยไม่ต้องพึ่งแอนิเมชันหรือโค้ดชุดอื่น นั่นหมายความว่า การหมุนที่คุณเห็นคือการจำลองผลลัพธ์ที่ถูกตัดสินไว้ล่วงหน้าแล้ว — ซึ่งเป็นวิธีเดียวที่ทำให้คำสัญญาทั้งสองข้อข้างต้นเป็นจริงได้พร้อมกัน
ที่มาของความสุ่มที่แท้จริง
เราใช้ตัวสร้างค่าสุ่มเชิงวิทยาการเข้ารหัสของเบราว์เซอร์คุณ นั่นคือ crypto.getRandomValues ไม่ใช่ Math.random เนื่องจาก Math.random อาจคาดเดาผลลัพธ์ได้ในบางเบราว์เซอร์ ซึ่งสำหรับกิจกรรมการจับสลากแล้ว ความไม่แน่นอนของผลลัพธ์ถือเป็นสิ่งสำคัญที่สุด
ทำไมเราถึงต้องตัดตัวเลขบางตัวทิ้ง
การแปลงตัวเลขสุ่มขนาด 32 บิตให้เป็น “ตัวเลขตั้งแต่ 0 ถึง 11” โดยการหาเศษเหลือ (modulo) จะทำให้เกิดความไม่เป็นธรรมขึ้นเล็กน้อย เนื่องจาก 2³² ไม่สามารถหารด้วย 12 ได้ลงตัว ทำให้ตัวเลือกแรกๆ มีโอกาสออกมากกว่าตัวเลือกอื่นหนึ่งครั้ง สำหรับวงล้อ 12 ช่อง ความเอนเอียงนี้อาจดูเล็กน้อย แต่มันเกิดขึ้นจริง ส่งผลต่อช่องเดิมๆ เสมอ และไม่มีวันเฉลี่ยคืน ดังนั้น แทนที่จะใช้วิธีหาเศษเหลือ เราจึงใช้วิธีทิ้งค่าที่ตกอยู่ในส่วนเกินที่ไม่ลงตัวนั้นแล้วสุ่มใหม่ แม้จะต้องสุ่มเพิ่มเป็นบางครั้ง แต่วิธีนี้รับประกันว่าจะได้ผลลัพธ์ที่มีการกระจายตัวสม่ำเสมอเท่ากันอย่างแท้จริง
const limit = Math.floor(2 ** 32 / max) * max;
let draw = crypto.getRandomValues(new Uint32Array(1))[0];
while (draw >= limit) {
draw = crypto.getRandomValues(new Uint32Array(1))[0];
}
return draw % max;การถ่วงน้ำหนัก และเหตุผลที่ขนาดช่องตรงกับโอกาสออก
การสุ่มแบบถ่วงน้ำหนักจะนำค่าน้ำหนักทั้งหมดมารวมกัน สุ่มตัวเลขที่ไม่เกินผลรวมนั้นด้วยวิธี Rejection Sampling เดียวกัน แล้วดูว่าตัวเลขนั้นตกอยู่ในรายการใด จากนั้นวงล้อจะวาดสัดส่วนของแต่ละช่องตามอัตราส่วนของวงกลมอย่างแม่นยำ วงล้อที่ช่องดูเท่ากันแต่มีโอกาสออกไม่เท่ากันนั้นเป็นการสร้างภาพลวงตาซึ่งตรงข้ามกับสิ่งที่เรายึดมั่น ดังนั้น พื้นที่ของช่องและโอกาสการออกจึงถูกสร้างขึ้นให้มีค่าเท่ากันตามโครงสร้างจริง ไม่ใช่แค่การกำหนดนโยบาย
รายชื่อของคุณจะไม่ถูกส่งออกจากเบราว์เซอร์
ไม่ต้องสมัครสมาชิกและไม่มีการบันทึกข้อมูลบนเซิร์ฟเวอร์ รายชื่อของคุณจะคงอยู่ในเบราว์เซอร์นี้เท่านั้น และลิงก์สำหรับแชร์จะฝังข้อมูลวงล้อไว้ใน URL โดยตรง เราไม่สามารถมองเห็นหรือบันทึกข้อมูลใดๆ เกี่ยวกับการสุ่มของคุณได้เลย
ตรวจสอบความโปร่งใสด้วยตัวคุณเอง
ระบบการสุ่มเขียนขึ้นด้วยโค้ดเพียงไม่กี่สิบบรรทัด และข้อเท็จจริงทั้งหมดข้างต้นได้รับการทดสอบด้วยชุดทดสอบอัตโนมัติที่จะแจ้งเตือนทันทีหากการทำงานผิดเพี้ยนไป ซึ่งรวมถึงการทดสอบส่งตัวเลขที่จงใจให้เกิดความเอนเอียงจากการหาเศษเหลือ (modulo bias) เพื่อยืนยันว่าผลลัพธ์ยังคงมีการกระจายตัวที่เท่ากันอย่างแท้จริง
วงล้อรองรับได้สูงสุด 1000 รายการ และใช้วิธีการสุ่มที่แม่นยำและเท่าเทียมเหมือนกันทั้งหมด ไม่ว่าจะมีเพียงรายการเดียวหรือครบทั้ง 1000 รายการ