คำนวณคณิตศาสตร์
เครื่องสร้างตัวเลข


เครื่องสร้างตัวเลข

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

ตัวเลือก

ตัวเลขสุ่ม

48, 9, 49, 11, 17, 22, 16, 37, 45, 41, 4, 36, 43, 10, 28, 27, 47, 25, 21, 33

เกิดข้อผิดพลาดกับการคำนวณของคุณ

สารบัญ

  1. การใช้เครื่องสุ่มตัวเลข
  2. ความแตกต่างระหว่างการเรียงลำดับแบบสุ่มและแบบไม่สุ่ม
  3. ประเภทของเครื่องสุ่มตัวเลข
  4. เครื่องสร้างเลขสุ่มของ Google
  5. การสุ่มเลขด้วยวิธีความสอดคล้องแบบเชิงเส้น
  6. เครื่องสร้างตัวเลขสุ่มด้วยฮาร์ดแวร์สมัยใหม่
    1. QRBG121
    2. ตะเกียงลาวา
    3. HotBits
    4. ความผันผวนของสุญญากาศควอนตัม
    5. เครื่องสร้างเลขสุ่มด้วยท่อนาโนคาร์บอน
    6. ลูกบาศก์และมูลนิธิ Electronic Frontier Foundation (EFF)
    7. เครื่องสร้างตัวเลขสุ่มควอนตัมจากสมาร์ทโฟนของโนเกีย

เครื่องสร้างตัวเลข

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

การใช้เครื่องสุ่มตัวเลข

การสุ่มตัวเลขนั้นมีความสำคัญในหลาย ๆ แขนง ตั้งแต่เกมคอมพิวเตอร์จนไปถึงแอปทั่ว ๆ ไป เช่น ระบบจะใช้เครื่องสุ่มตัวเลขเพื่อสุ่มแสดงแบนเนอร์และโฆษณาบนเว็บไซต์ และในการเข้ารหัสนั้น เราใช้การสุ่มตัวเลขเพื่อสร้างไซเฟอร์หรือคีย์พิเศษขึ้นมา

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

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

ความแตกต่างระหว่างการเรียงลำดับแบบสุ่มและแบบไม่สุ่ม

สมมุติว่าเรามีตัวเลขอยู่ชุดหนึ่ง 1 , 2 , 3 , 4 , 5 ชุดตัวเลขนี้เป็นแบบสุ่มหรือไม่

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

สมมุติว่าตัวเลขที่ให้มาจากการพิมพ์ตัวเลขแถวบนของคีย์บอร์ด ชุดตัวเลขนี้ไม่ได้จัดเรียงตัวแบบสุ่ม ๆ เพราะความน่าจะเป็นที่เลขหลังจาก 5 จะเป็น 6 นั้นสูงมาก

ชุดตัวเลขจะเป็นแบบสุ่มก็ต่อเมื่อสัญลักษณ์แต่ละตัวนั้นไม่ขึ้นอยู่กับสัญลักษณ์ตัวอื่น ๆ

เงื่อนไขเบื้องต้นประการหนึ่งที่ทำให้เครื่องสุ่มตัวเลขมีความยุติธรรมและทำงานได้อย่างถูกต้องคือตัวเลขทุก ๆ ตัวจะต้องมีความน่าจะเป็นที่จะถูกเลือกเท่า ๆ กัน หมายความว่าความสุ่มของเครื่องสุ่มตัวเลขนั้นไม่ขึ้นอยู่กับปัจจัยใด ๆ ทั้งสิ้น ตัวเลขที่แล้วและตัวเลขต่อไปไม่ขึ้นอยู่กับว่าตัวเลขปัจจุบันคืออะไร

ตัวอย่าง คุณทำการทอยลูกเต๋าหกด้านเป็นครั้งแรก โดยความน่าจะเป็นที่จะได้แต้ม 1 ถึง 6 นั้นเท่ากันไม่ว่าจะทอยสักสองครั้ง ร้อยหรือพันครั้งก็ตาม

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

สถาบันมาตรฐานและเทคโนโลยีแห่งชาติสหรัฐอเมริกาได้เสนอให้ใช้ “ชุดแบบทดสอบทางสถิติสำหรับเครื่องสร้างเลขสุ่มและเลขสุ่มเทียมสำหรับการเข้ารหัส” ซึ่งประกอบด้วย 15 การทดสอบทางสถิติเพื่อวัดความสุ่มของหน่วยข้อมูลที่ฮาร์ดแวร์หรือซอฟต์แวร์สร้างขึ้นมา

ประเภทของเครื่องสุ่มตัวเลข

เครื่องสุ่มตัวเลข (RNG) มีสองประเภทด้วยกัน นั่นคือเครื่องสร้างเลขสุ่มจริง (TRNG) และเครื่องสร้างเลขสุ่มเทียม (PRNG)

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

ตัวอย่างของปรากฏการณ์ทางกายภาพที่เครื่องสร้างเลขสุ่มจริงใช้มีดังต่อไปนี้

  • กัมมันตภาพรังสี
  • สัญญาณรบกวนความร้อน
  • สัญญาณรบกวนแม่เหล็กไฟฟ้า
  • กลศาสตร์ควอนตัม และอื่นๆ

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

เครื่องสร้างเลขสุ่มจะรวบรวมเอ็นโทรปีจากแหล่งต่าง ๆ เพื่อสร้างค่าเริ่มต้น (ซีด) ที่เครื่องสร้างเลขสุ่มต้องการ

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

เครื่องสร้างเลขสุ่มเทียมใช้เลขเริ่มต้นเพียงตัวเดียวเท่านั้น และสร้างเลขสุ่มเทียมตามมาทีหลัง ส่วนเครื่องสร้างเลขสุ่มจริงนั้นจะสร้างตัวเลขที่มีค่าความสุ่มสูงได้ตั้งแต่แรกเลยด้วยการใช้แหล่งเอ็นโทรปีหลาย ๆ แหล่ง

เครื่องสร้างเลขสุ่มเทียมนั้นมีข้อเสียอยู่ คนที่ไม่มีความรู้ในด้านนี้อาจคิดว่าเลขที่ได้มาจากการสุ่มจริง ๆ แต่ถ้าคุณทราบค่าเริ่มต้นของชุดตัวเลขจากการสุ่มเทียมแล้ว คุณก็สามารถคาดการณ์ได้ว่าเลขตัวต่อ ๆ ไปจะเป็นเลขอะไร

นักเล่นเกมเร็วหรือที่เรียกกันว่า Speedrunner มักจะใช้ประโยชน์จากจุดอ่อนข้อนี้ของ PRNG พวกเขาทำให้เกมนั้นมีคาดเดาได้เพื่อจะได้ผ่านด่านได้เร็วที่สุดเท่าที่จะทำได้ แต่การคาดเดาผลของ PRNG ในลักษณะนี้นั้นไม่ได้ก่อให้เกิดปัญหาใด ๆ

แต่ในบางสถานการณ์นั้น การคาดเดาตัวเลขสุ่มอาจนำไปสู่ปัญหาใหญ่ได้ เช่นในการสร้างรหัสคีย์ความปลอดภัย เป็นต้น

ถ้านักแฮ็กทราบตัวเลขเริ่มต้นที่ใช้ในการสร้างคีย์ RSA ในใบรับรอง TLS เขาอาจถอดรหัสข้อมูลที่เข้าและออกจากเครือข่ายได้ เขาจะทราบรหัสผ่านและข้อมูลส่วนบุคคลของที่ส่งไปมาบนอินเทอร์เน็ต

ในกรณีเหล่านี้ การใช้เครื่องสร้างเลขสุ่มจริงจะปลอดภัยกว่า

เครื่องสร้างเลขสุ่มของ Google

Google ก็มีเครื่องสร้างเลขสุ่มเป็นของตัวเองเหมือนขึ้น สร้างขึ้นโดยใช้ JavaScript คุณหาเครื่องสร้างเลขสุ่มตัวนี้ได้ด้วยการเสิร์ชใน Google ว่า "random number generator."

การสุ่มเลขด้วยวิธีความสอดคล้องแบบเชิงเส้น

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

ในการสร้างเลขสุ่มด้วยวิธีการนี้ เราจะต้องเลือกตัวเลขมา 4 ตัว

m > 0, โมดูล

0 ≤ a ≤ m, ตัวคูณ

0 ≤ c ≤ m, ระยะการเพิ่ม

0 ≤ X₀ ≤ m, ตัวเลขเริ่มต้น

ชุดตัวเลขสุ่มสร้างมาจากสูตรนี้

Xₙ₊₁ = (aXₙ + c) mod m

เราควรทราบด้วยว่าวิธีการนี้ขึ้นอยู่กับพารามิเตอร์ที่คุณใส่

ตัวอย่าง หากเราใส่พารามิเตอร์ด้านล่าง

X₀ = 3, a = 4, c = 5, m = 6

เราจะได้ชุดตัวเลขสั้น ๆ ที่ซ้ำกัน

3, 5, 1, 3, 5, 1

ซึ่งดูไม่สุ่มเลย

ต่อไปเราจะเปลี่ยนพารามิเตอร์กัน:

X₀ = 2, a = 85, c = 507, m = 1356

และการกระจายตัวของผลลัพธ์จะยิ่งคาดเดายากไปกว่าเดิม คุณต้องเลือกตัวเลขที่จะกรอกในอัลกอริทึมนี้ด้วยความระมัดระวัง

2, 677, 1100, 443, 194, 725, 1112, 107, 110, 365, 344, 1271, 62, 353, 680, 1355, 422, 1121, 872, 47, 434, 785, 788, 1043, 1022, 593, 740, 1031, 2, 677, 1100, 443, 194, 725, 1112, 107, 110, 365, 344, 1271, 62, 353, 680, 1355, 422, 1121, 872, 47, 434, 785, 788, 1043, 1022, 593, 740, 1031, 2, 677, 1100, 443, 194, 725, 1112, 107, 110, 365...

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

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

เครื่องสร้างตัวเลขสุ่มด้วยฮาร์ดแวร์สมัยใหม่

QRBG121

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

ตะเกียงลาวา

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

กล้องหลายตัวตรวจจับการเคลื่อนไหวของของเหลวและเก็บภาพเอาไว้ ภาพเหล่านั้นจะถูกแปลงเป็นตัวเลขที่จะถูกนำไปใช้สร้างคีย์

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

HotBits

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

ความผันผวนของสุญญากาศควอนตัม

อันที่จริงแล้วสุญญากาศนั้นไม่ได้ว่างเปล่าเสียทีเดียว หลักความไม่แน่นอนของไฮเซ็นเบิร์กบอกว่าในพื้นที่สุญญากาศนั้นมีอนุภาคเกิดขึ้นมาและสลายตัวไปอยู่ตลอด

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

เส้นสเปกตรัมของการแผ่รังสีที่ถูกกระเจิงจะปรากฏขึ้นมา สุญญากาศนั้นผันผวนอย่างคาดเดาไม่ได้ ทำให้เส้นเหล่านี้แตกต่างกันออกไปในแบบที่คาดเดาไม่ได้

เครื่องสร้างเลขสุ่มด้วยท่อนาโนคาร์บอน

วิธีการนี้ผสมผสานความกะทัดรัดเข้ากับการใช้สัญญาณรบกวนความร้อน

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

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

ลูกบาศก์และมูลนิธิ Electronic Frontier Foundation (EFF)

ทางบริษัทได้เสนอวิธีการง่าย ๆ ในการสร้างรหัสผ่านที่ปลอดภัยด้วยเครื่องสร้างเลขสุ่มแบบฮาร์ดแวร์ที่ใช้การทอยลูกเต๋า

ตัวอย่าง คุณทอยลูกเต๋าครั้งละ 5 ลูกและจดแต้มที่ออกไว้ ลูกเต๋าเรียงจากซ้ายไปขวาดังนี้ 63131 ต่อไป คุณเปิดรายชื่อคำศัพท์บนเว็บไซต์ EFF เพื่อหาคำที่ตรงกับ 63131 ซึ่งก็คือคำว่า "turbofan"

ทำตามขั้นตอนนี้หลาย ๆ ครั้ง เช่น 5 ครั้ง คุณจะได้วลีที่ประกอบด้วยคำศัพท์ 5 คำ สมมุติว่าเป็น "turbofan purge unfitting try pruning" ถ้าคุณมีเทคนิคช่วยจำ คุณจะจำวลีนี้ด้วยตัวเองเลยก็ได้

เครื่องสร้างตัวเลขสุ่มควอนตัมจากสมาร์ทโฟนของโนเกีย

ในปี 2014 มหาวิทยาลัยเจนีวาได้สร้างเครื่องสร้างตัวเลขสุ่มควอนตัมขึ้นมาจากล้องของมือถือสมาร์ตโฟนโนเกีย N9

กล้องจะนับจำนวนของโฟตอนที่พุ่งชนแต่ละพิกเซล แหล่งกำเนิกแสงคือหลอด LED แบบธรรมดา แต่ละพิกเซลของกล้อง 8 MP จะตรวจจับ 400 โฟตอนในเวลาอันสั้น จำนวนของโฟตอนทั้งหมดจากทุก ๆ พิกเซลมาเรียงกันเป็นชุดตัวเลขแบบสุ่ม ๆ