เครื่องมือสร้างตัวเลขสุ่ม
ตัวเลือก
เอาต์พุต
รายละเอียดทางเทคนิค
เครื่องสร้างตัวเลขสุ่มทำงานอย่างไร
เครื่องมือนี้ทำอะไร
เครื่องสร้างตัวเลขสุ่มสร้างจำนวนเต็มหรือเลขทศนิยมแบบลอยตัวที่มีความแข็งแรงทางคริปโตกราฟี โดยใช้ Web Crypto API (crypto.getRandomValues) และใช้ rejection sampling เพื่อกำจัด modulo bias ทำให้การกระจายตัวสม่ำเสมอในช่วงที่กำหนด คุณสามารถสร้างค่าเดี่ยวหรือเป็นชุดของตัวเลขสุ่มได้ พร้อมตั้งค่าต่ำสุด สูงสุด และความละเอียดได้
กรณีการใช้งานทั่วไปของนักพัฒนา
นักพัฒนาใช้เครื่องสร้างตัวเลขสุ่มแบบคริปโตกราฟีสำหรับงานที่อ่อนไหวด้านความปลอดภัย เช่น สร้างโทเค็นเซสชันที่คาดเดาไม่ได้, nonce, การสุ่มเลือกเลขลอตเตอรี่ หรือการสุ่มตัวอย่างจากชุดข้อมูล นักพัฒนาเกมใช้สำหรับการทอยลูกเต๋าและการสร้างแบบ procedural เมื่อความยุติธรรมมีความสำคัญ วิศวกร QA สร้างอินพุตทดสอบแบบสุ่มสำหรับ fuzz testing และนักวิทยาศาสตร์ข้อมูลใช้สำหรับการสุ่มตัวอย่างเมื่อไม่ต้องการความสามารถในการทำซ้ำ
รูปแบบข้อมูล ชนิด หรือรูปแบบย่อย
เครื่องมือนี้รองรับการสร้างจำนวนเต็มภายในช่วงที่กำหนดได้ตามต้องการ (รวมขอบเขต) และการสร้างเลขทศนิยมแบบลอยตัวพร้อมกำหนดความละเอียดทศนิยมได้ Rejection sampling จะทิ้งค่าที่ทำให้เกิด modulo bias เมื่อช่วงไม่หารลงตัวกับพื้นที่ผลลัพธ์ของแหล่งสุ่ม เอนโทรปีพื้นฐานมาจาก CSPRNG ของระบบปฏิบัติการ (CryptGenRandom บน Windows, /dev/urandom บน Unix) ที่ถูกนำเสนอผ่าน Web Crypto API ของเบราว์เซอร์
ข้อผิดพลาดที่พบบ่อยและกรณีขอบ
ความสุ่มแบบคริปโตกราฟีช้ากว่า Math.random() และไม่จำเป็นสำหรับงานที่ไม่เกี่ยวกับความปลอดภัย เช่น การสับเพลงในเพลย์ลิสต์ Rejection sampling ในทางทฤษฎีอาจวนลูปหลายครั้งสำหรับช่วงที่ผิดปกติ แม้ในทางปฏิบัติจะเล็กน้อย ตัวเลขสุ่มที่สร้างในเบราว์เซอร์ไม่สามารถตั้ง seed เพื่อให้ทำซ้ำได้ — หากต้องการลำดับแบบกำหนดได้สำหรับการทดสอบ ให้ใช้ PRNG แบบมี seed แทน ช่วงจำนวนเต็มที่ปลอดภัยสูงสุดถูกจำกัดด้วย Number.MAX_SAFE_INTEGER ของ JavaScript (2^53 - 1)
เมื่อใดควรใช้เครื่องมือนี้แทนการเขียนโค้ด
ใช้เครื่องมือบนเบราว์เซอร์นี้เมื่อคุณต้องการตัวเลขสุ่มที่ไม่เอนเอียงอย่างรวดเร็วสำหรับการตัดสินใจครั้งเดียว การทดสอบด้วยมือ หรือการตรวจสอบว่าอิมพลีเมนเทชันของคุณให้ค่าภายในช่วงที่คาดไว้ สำหรับการใช้งานจริง ให้เรียก crypto.getRandomValues() โดยตรงในโค้ดของคุณ หรือใช้ฟังก์ชัน CSPRNG ที่มากับภาษา (โมดูล secrets ใน Python, SecureRandom ใน Java) ที่ผสานกับการจัดการข้อผิดพลาดและการบันทึกล็อกของแอปคุณ