เป็นเวลา 6 ปีที่ฉันมีหน้าสร้างตัวเลขสุ่มบนเว็บไซต์ของฉัน เป็นผลการค้นหาแรกหรือครั้งที่สองใน Google สำหรับ "ตัวสร้างตัวเลขสุ่ม" และถูกนำมาใช้ในการตัดสินใจนับสิบหากไม่ใช่การแข่งขันและภาพวาดหลายร้อยรายการในฟอรัมสนทนาและบล็อก (ฉันรู้เพราะฉันเห็นผู้อ้างอิงใน บันทึกเว็บและมักจะไปดู)
วันนี้มีคนส่งอีเมลมาบอกฉันว่ามันอาจจะไม่สุ่มอย่างที่ฉันคิด เธอลองสร้างตัวเลขสุ่มที่มีขนาดใหญ่มาก (เช่นระหว่าง 1 ถึง 10000000000000000000) และพบว่าตัวเลขเหล่านี้เป็นตัวเลขเดียวกันเกือบตลอดเวลา อันที่จริงฉันห่อฟังก์ชั่นเป็นวงเพื่อให้สามารถสร้างตัวเลขได้หลายพันตัวและแน่นอนว่าสำหรับตัวเลขจำนวนมากการเปลี่ยนแปลงนั้นมีขนาดประมาณ 2 คำสั่งเท่านั้น
ทำไม?
นี่คือเวอร์ชันวนซ้ำเพื่อให้คุณสามารถทดลองใช้ด้วยตัวคุณเอง:
http://andrew.hedges.name/experiments/random/randomness.html
ซึ่งรวมถึงการใช้งานที่ตรงไปตรงมาจากMozilla Developer Networkและโค้ดบางส่วนจากปี 1997 ที่ฉันได้กวาดหน้าเว็บที่ไม่มีอยู่แล้ว ("Central Randomizer 1.3" ของ Paul Houle) ดูแหล่งที่มาเพื่อดูว่าแต่ละวิธีทำงานอย่างไร
ฉันได้อ่านที่นี่และที่อื่น ๆเกี่ยวกับMersenne Twister สิ่งที่ฉันสนใจคือเหตุใดจึงไม่มีการเปลี่ยนแปลงที่มากขึ้นในผลลัพธ์จากฟังก์ชันMath.randomในตัวของ JavaScript ขอบคุณ!