เครื่องสุ่มตัวเลข

สุ่มตัวเลขภายในช่วงค่าต่ำสุดถึงสูงสุดที่กำหนด เลือกจำนวนที่ต้องการและตั้งให้ซ้ำหรือไม่ซ้ำได้ เหมาะกับการจับฉลาก สุ่มรางวัล เลือกผู้โชคดี

ประเภทตัวเลข
อนุญาตซ้ำ

วิธีใช้งาน

  1. กรอกค่า

    กรอกข้อมูลในช่องที่จำเป็น

  2. กดคำนวณ

    กดปุ่มคำนวณเพื่อดูผลลัพธ์

  3. ดูผลลัพธ์

    ดูผลลัพธ์และแชร์ได้ตามต้องการ

เครื่องสร้างเลขสุ่มคืออะไร?

เครื่องสร้างเลขสุ่ม (random number generator) คือเครื่องมือที่สุ่มเลือกตัวเลขภายในช่วงที่กำหนด ในแบบที่ไม่มีใครคาดเดาหรือจงใจเลือกได้ เพียงกำหนดช่วง 'ค่าต่ำสุด~ค่าสูงสุด' ระบุว่าจะสุ่มกี่ตัว และค่าซ้ำเดิมจะออกมาได้อีกหรือไม่ (อนุญาตให้ซ้ำ · ไม่ซ้ำ) รายการตัวเลขที่ตรงตามเงื่อนไขก็จะปรากฏขึ้นทันที

ใช้ที่ไหนบ้าง?

  • การจับฉลาก · กิจกรรม: ขจัดอคติของมนุษย์ในสถานการณ์ที่ต้องการความยุติธรรม เช่น การเลือกผู้ชนะรางวัล ลำดับการนำเสนอ หรือการจัดทีม
  • ลอตเตอรี · การเลือกเลข: ใช้สุ่มเลขตามกติกาเฉพาะ เช่น สุ่ม 6 ตัวจาก 1~45 แบบไม่ซ้ำ
  • การจำลอง · การสุ่มตัวอย่าง: เหมาะกับการจำลองทอยลูกเต๋าและเหรียญ การสุ่มตัวอย่างผู้ตอบแบบสอบถาม และการแบ่งกลุ่มในการทดสอบ A/B

เครื่องมือนี้ใช้ crypto.getRandomValues() ของเบราว์เซอร์เพื่อสร้างเลขสุ่มคุณภาพสูงจากเอนโทรปีของระบบปฏิบัติการ และขจัดความเอนเอียงที่ทำให้การแจกแจงไม่สม่ำเสมอ

สูตรการคำนวณ

เลขสุ่มจำนวนเต็มหนึ่งตัวจากช่วง [min, max] คำนวณได้จากสูตรต่อไปนี้

ผลลัพธ์ = min + ⌊ r × (max − min + 1) ⌋

  • min / max: ค่าต่ำสุดและค่าสูงสุดของช่วง (รวมทั้งสองค่า)
  • r: เลขสุ่มแบบสม่ำเสมอตั้งแต่ 0 ถึงน้อยกว่า 1
  • max − min + 1: จำนวนเต็มทั้งหมดที่อาจสุ่มได้ (= ช่วง)

ตัวอย่าง: เมื่อ min=1, max=45 และ r=0.732
1 + ⌊0.732 × 45⌋ = 1 + ⌊32.94⌋ = 1 + 32 = 33

กรณี ไม่ซ้ำ หากค่าที่สุ่มได้แล้วออกมาอีกจะถูกทิ้งและสุ่มใหม่ (rejection sampling) ดังนั้นต้องเป็น จำนวนที่สุ่ม ≤ ช่วง โดยในช่วง 1~45 จะสร้างได้สูงสุดเพียง 45 ตัวแบบไม่ซ้ำ

คำถามที่พบบ่อย

เครื่องสร้างเลขสุ่มนี้สุ่มจริงหรือไม่?
ใช้ crypto.getRandomValues() API ของเบราว์เซอร์เพื่อสร้างเลขสุ่มที่ปลอดภัยทางการเข้ารหัสจากเอนโทรปีของระบบปฏิบัติการ ความสุ่มสูงกว่า Math.random() อย่างมาก และผลลัพธ์แทบเป็นไปไม่ได้ที่จะคาดเดา
Math.random() กับ crypto.getRandomValues() ต่างกันอย่างไร?
Math.random() เป็นเลขสุ่มเทียม หากรู้ seed ภายในก็สามารถสร้างลำดับซ้ำและคาดเดาได้ ส่วน crypto.getRandomValues() เป็น CSPRNG ที่ใช้แหล่งเอนโทรปีของระบบปฏิบัติการ จึงคาดเดาไม่ได้ เมื่อความยุติธรรมและความปลอดภัยสำคัญ เช่น การจับฉลาก ควรใช้ตัวหลัง
สร้างเลขสุ่มแบบไม่ซ้ำได้ไหม?
ได้ เพียงเลือก 'ไม่ซ้ำ' ก็พอ มันใช้วิธี rejection sampling คือเลขที่ซ้ำกับที่สุ่มไปแล้วจะถูกทิ้งและสุ่มใหม่ จึงไม่มีค่าใดปรากฏซ้ำสองครั้งในผลลัพธ์
ทำไมจึงขึ้นข้อผิดพลาดว่า 'ไม่สามารถสร้าง N ตัวแบบไม่ซ้ำได้'?
เพราะการสุ่มแบบไม่ซ้ำ จำนวนที่ขอต้องไม่มากกว่าจำนวนตัวเลขในช่วง (ช่วง = max − min + 1) เช่น การสุ่ม 15 ตัวแบบไม่ซ้ำจาก 1~10 นั้นเป็นไปไม่ได้ ให้ขยายช่วงหรือลดจำนวนลง
ต้องตั้งค่าอย่างไรเพื่อสุ่มเลขลอตเตอรี?
ตั้งค่าต่ำสุด 1 ค่าสูงสุด 45 จำนวน 6 และการซ้ำเป็น 'ไม่ซ้ำ' ก็จะได้เลขตามเงื่อนไขเดียวกับลอตเตอรีเกาหลี (6/45) หากต้องการดูเลขโบนัสด้วย ให้เพิ่มจำนวนเป็น 7 ใช้เพื่ออ้างอิงเท่านั้นและไม่รับประกันการถูกรางวัล
สร้างเลขสุ่มทศนิยม (จำนวนจริง) ได้ไหม?
ได้ เปลี่ยนชนิดตัวเลขเป็น 'ทศนิยม' ก็จะสร้างจำนวนจริงภายในช่วง และระบุจำนวนตำแหน่งทศนิยมที่ต้องการได้ เหมาะเมื่อต้องการค่าต่อเนื่อง เช่น ค่าความน่าจะเป็นระหว่าง 0~1 หรือพิกัด
เลขสุ่มมีความเอนเอียง (bias) หรือไม่?
หากใช้เพียงเศษจากการหารเลขสุ่มด้วยช่วง (modulo) จะเกิด modulo bias ทำให้บางเลขออกบ่อยกว่า เครื่องมือนี้ขจัดความเอนเอียงนั้นด้วย rejection sampling ซึ่งทิ้งค่าที่เกินพหุคูณสูงสุดของช่วง เพื่อให้ทุกค่ามีความน่าจะเป็นเท่ากัน
สามารถสร้างผลลัพธ์เดิมซ้ำได้ไหม (seed)?
ไม่ได้ เครื่องนี้สร้างเลขจากเอนโทรปีใหม่ทุกครั้งโดยไม่มี seed จึงไม่สามารถสร้างลำดับเดิมซ้ำโดยจงใจได้ เหมาะกับการจับฉลากที่ยุติธรรมเพียงครั้งเดียว ส่วนการทดลองที่ต้องทำซ้ำได้ ควรใช้เครื่องมือที่อิงกับ seed แยกต่างหาก
สูตรที่ตรวจสอบแล้ว 2026

เครื่องคิดเลขที่เกี่ยวข้อง