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

สร้างตัวเลขสุ่มหนึ่งตัว รายการ หรือชุดตัวเลขหลายชุดในช่วงใดก็ได้ — ทั้งหมดสร้างขึ้นโดยตรงในเบราว์เซอร์ของคุณด้วยความสุ่มที่ปลอดภัยทางการเข้ารหัส ไม่มีการส่งไปยังเซิร์ฟเวอร์เลย

กดสร้างเพื่อสุ่มเลือก
ตัวเลือก

ต้องการวิธีที่รวดเร็วและยุติธรรมในการสุ่มตัวเลขหรือไม่? เครื่องมือสุ่มตัวเลขออนไลน์ฟรีนี้จะสร้างตัวเลขหนึ่งตัว — หรือรายการตัวเลขทั้งหมด — ในช่วงใดก็ได้ที่คุณเลือก ตั้งแต่ช่วงง่าย ๆ 1 ถึง 10 ไปจนถึงช่วงที่กว้างถึงพันล้าน ตั้งค่าค่า “ต่ำสุด” และ “สูงสุด” เลือกจำนวนตัวเลขที่คุณต้องการด้วย “จำนวนรายการที่เลือก” แล้วกด “สร้างผลลัพธ์” ขอบเขตทั้งสองด้านรวมอยู่ในผลลัพธ์ ดังนั้นช่วง 1 ถึง 10 จึงให้ได้ทั้ง 1 และ 10

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

ตัวเลือกเหล่านี้ออกแบบมาสำหรับสถานการณ์จริงที่ผู้คนต้องการตัวเลขสุ่ม เปิด “ไม่เลือกซ้ำ” เพื่อให้แน่ใจว่าไม่มีตัวเลขใดปรากฏสองครั้ง — การตั้งค่านี้เหมาะสำหรับการจับรางวัล การสุ่มแบบลอตเตอรี หรือการแบ่งคนเป็นกลุ่มโดยไม่ซ้ำกัน ต้องการผู้ชนะ 20 คนจากผู้เข้าร่วม 500 คนหรือไม่? ตั้งค่า “ต่ำสุด” เป็น 1 และ “สูงสุด” เป็น 500 เปิด “ไม่เลือกซ้ำ” ตั้งค่า “จำนวนรายการที่เลือก” เป็น 20 แล้วกด “สร้างผลลัพธ์” “ลำดับการเรียง” จะจัดเรียงผลลัพธ์จากน้อยไปมากหรือมากไปน้อย และปุ่มเดียวจะคัดลอกผลลัพธ์ทั้งหมดพร้อมกัน การเปลี่ยน “รูปแบบผลลัพธ์” จาก “ขึ้นบรรทัดใหม่” เป็น “คั่นด้วยช่องว่าง” หรือ “คั่นด้วยจุลภาค” จะแสดง “จำนวนชุด”: การสุ่มอิสระหลายครั้งพร้อมกัน — เช่น ยี่สิบชุด ชุดละ 3 ตัวเลข สำหรับการจับรางวัลยี่สิบรอบ — และ “อนุญาตให้ซ้ำกันระหว่างชุด” จะกำหนดว่าตัวเลขเดียวกันสามารถปรากฏได้มากกว่าหนึ่งชุดหรือไม่

ความสุ่มนี้ถูกสร้างขึ้นจริง ๆ อย่างไร? เบราว์เซอร์ของคุณให้ค่าสุ่มที่ปลอดภัยทางการเข้ารหัสผ่าน Web Crypto API แทนที่จะใช้ PRNG ของ JavaScript อย่าง Math.random() เมื่อคุณกด “สร้างผลลัพธ์” หน้าเว็บจะขอค่าสุ่มด้วย crypto.getRandomValues แล้วนำไปสร้างตัวเลขในช่วงที่คุณเลือก แหล่งสุ่มพื้นฐานนี้จัดหาโดยระบบปฏิบัติการผ่านเบราว์เซอร์ ดังนั้นหน้าเว็บจึงไม่จำเป็นต้องเก็บค่า seed หรือลำดับสุ่มเทียมของตัวเอง

ขั้นตอนการแปลงค่าดิบให้อยู่ในช่วงที่คุณกำหนด มักเป็นจุดที่เครื่องมือสุ่มทั่วไปทำงานผิดพลาดอย่างเงียบ ๆ และควรพูดถึงแยกเป็นย่อหน้าหนึ่งโดยเฉพาะ การนำค่ามาหารเอาเศษ (modulo) ด้วยขนาดของช่วงดูเหมือนเป็นวิธีที่ง่ายที่สุด แต่กลับเป็นวิธีที่ลำเอียง: หากช่วงนั้นหารลงตัวไม่พอดีกับ 2^32 ตัวเลขที่น้อยที่สุดจะปรากฏบ่อยกว่าตัวอื่นเล็กน้อย ข้อบกพร่องนี้เรียกว่า modulo bias และเป็นสิ่งที่วัดได้จริง ไม่ใช่แค่ทฤษฎี เครื่องมือนี้จึงทิ้งค่าใดก็ตามที่เกินกว่าตัวคูณเต็มที่มากที่สุดของช่วงนั้น แล้วสุ่มค่าใหม่อีกครั้ง — เทคนิคนี้เรียกว่า rejection sampling วิธีนี้ต้องใช้การสุ่มเพิ่มอีกไม่กี่ครั้ง แต่แลกมาด้วยการรับประกันที่แม่นยำ: ตัวเลขทุกตัวระหว่าง “ต่ำสุด” และ “สูงสุด” มีโอกาสเท่ากันจริง ๆ ไม่ใช่แค่ใกล้เคียงกัน

อะไรทำให้ตัวเลขหนึ่งสุ่มอย่างแท้จริง? ตัวเลขหนึ่งจะสุ่มมากพอเมื่อผลลัพธ์ก่อนหน้าไม่บอกอะไรเลยเกี่ยวกับผลลัพธ์ถัดไป — และในทางปฏิบัติมีสามระดับสำหรับเรื่องนี้ ฟังก์ชันสุ่มเทียมทั่วไปอย่าง Math.random() ทำงานด้วยอัลกอริทึมที่กำหนดแน่นอน (deterministic): ใครก็ตามที่รู้สถานะภายในของมันสามารถสร้างลำดับทั้งหมดขึ้นมาใหม่ได้ — เหมาะสำหรับการสลับสไลด์นำเสนอ แต่ไม่เหมาะกับสิ่งใดก็ตามที่ผลลัพธ์ต้องคาดเดาไม่ได้ ตัวสร้างเลขสุ่มที่ปลอดภัยทางการเข้ารหัส — ซึ่งเป็นแบบที่เครื่องมือนี้ใช้ — ก็เป็นอัลกอริทึมเช่นกัน แต่ถูกออกแบบมาให้สร้างค่าที่คาดเดาไม่ได้โดยใช้แหล่งความสุ่มของระบบที่ปลอดภัย และถูกออกแบบมาให้การสังเกตผลลัพธ์ก่อนหน้าไม่ทำให้สามารถคาดเดาค่าถัดไปได้ในทางปฏิบัติ ความสุ่มทางกายภาพ จากแหล่งอย่างสัญญาณรบกวนในบรรยากาศหรือการสลายตัวของสารกัมมันตรังสี ถือเป็นอีกหมวดหมู่ที่แตกต่างจากทั้งสองระดับ แม้ว่าสำหรับการสุ่มตัวเลขในช่วงหนึ่ง ความแตกต่างในทางปฏิบัติจะหายไป นี่คือเหตุผลที่เบราว์เซอร์มี crypto API แยกต่างหากแทนที่จะปรับปรุง Math.random(): ทั้งสองแก้ปัญหาคนละแบบ และมีเพียงแบบเดียวเท่านั้นที่ปลอดภัยเมื่อผลลัพธ์มีความสำคัญต่อใครสักคน

ลำดับที่สุ่มอย่างแท้จริงไม่ได้มีจุดประสงค์ให้ดูสุ่มในสายตามนุษย์ ลองสุ่มตัวเลขสิบตัวระหว่าง 1 ถึง 10 แล้วคุณจะเห็นการซ้ำ คู่ที่ใกล้เคียงกันอย่าง 7, 7, 8 หรือช่วงสั้น ๆ ที่ตัวเลขสูงติดกันอยู่บ่อยครั้ง — และทั้งหมดนี้เป็นเรื่องปกติ ความสุ่มที่แท้จริงคาดเดาไม่ได้ ไม่ใช่กระจายเท่ากัน: การสุ่มแต่ละครั้งเป็นอิสระจากกัน ตัวเลขก่อนหน้าไม่มีผลต่อตัวเลขถัดไปเลยแม้แต่น้อย และไม่มีตัวเลขใด “ถึงคิว” ที่จะออกมา สัญชาตญาณที่ยืนกรานตรงข้ามนี้เรียกว่า gambler's fallacy และสัญชาตญาณเดียวกันนี้เองที่ทำให้มนุษย์เป็นเครื่องมือสุ่มตัวเลขที่แย่ — เมื่อถูกขอให้คิดลำดับสุ่มขึ้นมาเอง เราจะหลีกเลี่ยงการซ้ำและกระจายค่าให้สม่ำเสมอมากกว่าที่โอกาสจริงจะทำ ผลลัพธ์ที่ดูเป็นระเบียบอย่างน่าสงสัยคือร่องรอยฝีมือมนุษย์ ส่วนความสุ่มที่แท้จริงกลับสร้างกลุ่มก้อน

ทำไมต้องเลือกเครื่องมือสุ่มตัวเลขนี้?

ตัวเลขสุ่มถูกนำไปใช้ในหลายที่มากกว่าที่คนส่วนใหญ่คิด ครูเรียกนักเรียนตอบคำถามโดยไม่ลำเอียง สตรีมเมอร์และทีมการตลาดสุ่มผู้ชนะกิจกรรมแจกของรางวัลและจับฉลากต่อหน้าผู้ชมที่ต้องเชื่อในผลลัพธ์ ผู้เล่นใช้แทนลูกเต๋าที่หายไปหรือตัดสินว่าใครเล่นก่อน และการแข่งขันใช้จับลำดับการเริ่มต้น นักวิจัยเลือกตัวอย่างสุ่มเพื่อให้ผลการศึกษาของพวกเขาใช้ได้กว้างกว่าแค่กลุ่มอาสาสมัคร นักพัฒนาสร้างข้อมูลทดสอบ กำหนดค่า seed สำหรับการจำลอง และเลือกตัวระบุระหว่างการทำ QA จุดร่วมของทั้งหมดนี้คือกระบวนการเลือกแบบสุ่มที่สามารถอธิบายได้ในภายหลัง: เนื่องจากการสุ่มใช้ความสุ่มทางการเข้ารหัสและเกิดขึ้นทั้งหมดบนอุปกรณ์ของคุณ คุณจึงสามารถแสดงให้เห็นได้ว่าผลลัพธ์นั้นเกิดขึ้นได้อย่างไรหากมีใครตั้งคำถาม

เครื่องมือนี้มีข้อจำกัดตามความเป็นจริงบางประการที่ควรรู้ โหมด “ไม่เลือกซ้ำ” ไม่สามารถสร้างตัวเลขได้มากกว่าที่มีอยู่ในช่วงนั้น: ค่าที่ไม่ซ้ำกัน 20 ค่าระหว่าง 1 ถึง 10 นั้นไม่มีอยู่จริง การสุ่มแต่ละครั้งเป็นอิสระจากกันและผลลัพธ์ก่อนหน้าไม่มีผลต่อผลลัพธ์ถัดไป ดังนั้นการรีเฟรชหน้าเว็บจึงไม่ได้รีเซ็ตวงจรใด ๆ — เพราะไม่มีวงจรอยู่ตรงนี้เลย และแม้ว่าตัวเลขจะปลอดภัยทางการเข้ารหัส การสุ่มที่นี่ก็เป็นเพียงการเลือกที่ยุติธรรม ไม่ใช่การทำนาย: การออกรางวัลลอตเตอรีอย่างเป็นทางการใช้อุปกรณ์ทางกายภาพหรือที่ได้รับการรับรองของตนเอง และสิ่งใดก็ตามที่คำนวณในเบราว์เซอร์ของคุณไม่มีความเกี่ยวข้องกับมันเลย ภายในขอบเขตเหล่านี้ การรับประกันนั้นแข็งแกร่งมาก — ตัวเลขทุกตัวในช่วงของคุณมีโอกาสเท่ากันจริง ๆ ในทุกการสุ่ม

FAQ

ความสุ่มนี้ปลอดภัยทางการเข้ารหัสหรือไม่?

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

ฉันจะสร้างตัวเลขสุ่มในช่วงที่กำหนดได้อย่างไร?

ป้อนค่าที่น้อยที่สุดที่เป็นไปได้ในช่อง “ต่ำสุด” และค่าที่มากที่สุดในช่อง “สูงสุด” จากนั้นกด “สร้างผลลัพธ์” ขอบเขตทั้งสองด้านนับรวมอยู่ในผลลัพธ์ด้วย ดังนั้นช่วง 1 ถึง 10 จึงอาจปรากฏตัวเลข 1 หรือ 10 ก็ได้

ฉันสามารถสร้างตัวเลขสุ่มหลายตัวพร้อมกันได้หรือไม่?

ได้ กรอกช่อง “จำนวนรายการที่เลือก” ด้วยจำนวนที่คุณต้องการ (สูงสุด 1000) แล้วเครื่องมือจะเตรียมรายการทั้งหมดให้ด้วยการคลิกเดียว จากนั้นคุณสามารถคัดลอกผลลัพธ์ทั้งหมดไปยังคลิปบอร์ดด้วยปุ่มคัดลอก หรือบันทึกลงไฟล์ก็ได้

ฉันสามารถสร้างชุดตัวเลขหลายชุดพร้อมกันได้หรือไม่?

ได้ เปลี่ยน “รูปแบบผลลัพธ์” จาก “ขึ้นบรรทัดใหม่” เป็น “คั่นด้วยช่องว่าง” หรือ “คั่นด้วยจุลภาค” เพื่อแสดงช่อง “จำนวนชุด” กรอกจำนวนการสุ่มอิสระที่คุณต้องการ — เช่น 20 ชุด ชุดละ 3 ตัวเลข สำหรับการจับรางวัล 20 รอบ — แล้วเลือกว่าจะอนุญาตให้ตัวเลขซ้ำกันระหว่างชุดต่าง ๆ หรือไม่

ฉันสามารถจัดเรียงตัวเลขที่สร้างขึ้นได้หรือไม่?

ได้ ใช้ “ลำดับการเรียง” เพื่อจัดเรียงแต่ละรายการจากน้อยไปมากหรือมากไปน้อย หรือปล่อยไว้ที่ “ไม่มี” เพื่อให้ตัวเลขคงลำดับเดิมตอนที่สร้างขึ้น

ฉันจะหลีกเลี่ยงตัวเลขซ้ำได้อย่างไร?

เปิดสวิตช์ “ไม่เลือกซ้ำ” เมื่อเปิดใช้งานแล้ว ตัวเลขทุกตัวในรายการจะรับประกันว่าแตกต่างกัน — เหมาะสำหรับการจับรางวัล การแจกรางวัล หรือการแบ่งคนเป็นกลุ่ม โปรดจำไว้ว่าจำนวนที่เลือกต้องไม่เกินขนาดของช่วง: ไม่สามารถสร้างตัวเลขไม่ซ้ำ 20 ตัวระหว่าง 1 ถึง 10 ได้

ทำไมตัวเลขเดิมถึงออกซ้ำบ่อย ๆ?

เพราะการสุ่มที่เป็นอิสระจากกันสามารถซ้ำกันได้ นั่นคือธรรมชาติที่แท้จริงของความสุ่ม การสุ่มแต่ละครั้งไม่สนใจการสุ่มก่อนหน้าเลย ดังนั้นในช่วง 1 ถึง 10 โอกาสที่ตัวเลขเดิมจะออกติดกันสองครั้งจึงเท่ากับ 1 ใน 10 ทุกครั้ง — เป็นเรื่องปกติ ไม่ใช่ความผิดพลาด หากคุณต้องการรายการที่ไม่ซ้ำกัน ให้เปิด “ไม่เลือกซ้ำ” — วิธีนี้จำกัดการสุ่มโดยตั้งใจ ไม่ได้แก้ไขข้อบกพร่องแต่อย่างใด

ทำไมลำดับที่สุ่มถึงดูไม่สุ่ม?

เพราะความสุ่มที่แท้จริงคาดเดาไม่ได้ ไม่ใช่กระจายเท่ากัน คนมักคาดหวังว่าผลลัพธ์แบบสุ่มจะกระจายอย่างเป็นระเบียบ ดังนั้นกลุ่มก้อน การซ้ำ และช่วงสั้น ๆ อย่าง 7, 7, 8 จึงรู้สึกเหมือนข้อผิดพลาด ทั้งที่นั่นคือสิ่งที่โอกาสสร้างขึ้นมาพอดี ลำดับที่ดูเป็นระเบียบในสายตามนุษย์มักเป็นลำดับที่ไม่สุ่มจริง ๆ ต่างหาก

ความสุ่มที่สร้างในเบราว์เซอร์เชื่อถือได้หรือไม่?

เชื่อถือได้ ตราบใดที่มาจาก Web Crypto API เหมือนที่นี่ crypto.getRandomValues ให้ค่าที่ปลอดภัยทางการเข้ารหัสโดยใช้ความสุ่มของระบบปฏิบัติการในเบราว์เซอร์ของคุณ แทนที่จะใช้ PRNG ของ JavaScript อย่าง Math.random() ควรระวัง Math.random() สำหรับสิ่งใดก็ตามที่สำคัญ: มันมีความกำหนดแน่นอน (deterministic) และไม่เคยถูกออกแบบมาให้คาดเดาไม่ได้

ตัวเลขสุ่มสามารถถูกทำนายหรือถูกแทรกแซงได้หรือไม่?

ไม่ได้ที่นี่ ค่าต่าง ๆ มาจากแหล่งสุ่มที่ปลอดภัยทางการเข้ารหัสซึ่งจัดหาโดยระบบปฏิบัติการของคุณ ดังนั้นการสังเกตผลลัพธ์ก่อนหน้าจึงไม่ทำให้สามารถคาดเดาผลลัพธ์ถัดไปได้ในทางปฏิบัติ และการสุ่มเกิดขึ้นทั้งหมดบนอุปกรณ์ของคุณ — ไม่มีเซิร์ฟเวอร์ให้แทรกแซงและไม่มีคำขอให้ใครดักจับได้ เราเองก็ไม่สามารถแทรกแซงผลลัพธ์ของคุณได้ เพราะเราไม่เคยเห็นมันเลย

เหมาะสำหรับเลือกผู้ชนะของแจกหรือการจับรางวัลหรือไม่?

เหมาะ กำหนดหมายเลขให้ผู้เข้าร่วมแต่ละคน สร้างผลลัพธ์หนึ่งค่าในช่วงนั้น แล้วผู้เข้าร่วมที่มีหมายเลขตรงกันจะเป็นผู้ชนะ เนื่องจากแหล่งข้อมูลปลอดภัยทางการเข้ารหัสและการสุ่มเกิดขึ้นทั้งหมดบนอุปกรณ์ของคุณ กระบวนการนี้จึงอธิบายและบันทึกเป็นหลักฐานได้ง่ายหากมีผู้เข้าร่วมตั้งคำถามเกี่ยวกับผลลัพธ์ สำหรับการเลือกตัวเลขซื้อลอตเตอรี เครื่องมือนี้ทำหน้าที่เป็นเครื่องมือเลือกแบบสุ่ม ไม่ใช่เครื่องมือทำนาย: การออกรางวัลลอตเตอรีอย่างเป็นทางการแยกออกจากกันโดยสิ้นเชิง

การรีเฟรชหน้าเว็บเปลี่ยนความสุ่มหรือไม่?

ไม่เปลี่ยน และไม่จำเป็นต้องเปลี่ยนด้วย การสุ่มแต่ละครั้งขอค่าใหม่จากระบบปฏิบัติการอยู่แล้ว ดังนั้นผลลัพธ์จึงเป็นอิสระจากกันไม่ว่าคุณจะกด “สร้างผลลัพธ์” สิบครั้งติดต่อกัน หรือโหลดหน้าเว็บใหม่ทุกครั้งก่อนกด ไม่มีวงจรใดที่ต้องเริ่มใหม่ และไม่มีสถานะใดที่จะล้าสมัย — การรีเฟรชเพียงแค่ล้างผลลัพธ์ที่แสดงอยู่บนหน้าจอเท่านั้น

เครื่องมือนี้ฟรีหรือไม่ และคุณจัดเก็บตัวเลขของฉันหรือไม่?

เครื่องมือนี้ฟรีทั้งหมดโดยไม่ต้องลงทะเบียน ตัวเลขทั้งหมดถูกสร้างขึ้นในเครื่องภายในเบราว์เซอร์ของคุณและไม่เคยออกจากอุปกรณ์ของคุณเลย ดังนั้นแม้เราจะต้องการก็ไม่สามารถจัดเก็บหรือดูผลลัพธ์ของคุณได้