เครื่องกำเนิดตัวเลขสุ่มจำเป็นอย่างไร? เครื่องกำเนิดตัวเลขสุ่ม แนวคิดของเครื่องกำเนิดตัวเลข

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

เพื่อถอดความข้อความสุดท้าย ให้เราทวนคำพูดของผู้ที่เคยเข้าร่วมกิจกรรมด้วย ผลลัพธ์แบบสุ่ม: งานสุ่มอันยิ่งใหญ่

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

เครื่องกำเนิดตัวเลขสุ่มทำงานอย่างไร

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

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

การทดสอบการทำงานของสิ่งนี้ เครื่องกำเนิดไฟฟ้าออนไลน์บางครั้งก็ให้ค่อนข้างมาก ผลลัพธ์ที่น่าสนใจ: ใช้ตัวเลข 0 และ 1 โดยมี 10 ตัวเลือก ไม่ค่อยมีการกระจายตัวในอัตราส่วน 7 ต่อ 3 หรือแม้แต่ 6 ตัวเลขที่เหมือนกันสัญญา.

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

คุณสามารถเล่นได้ การต่อสู้ทางทะเลรับกลุ่มตัวเลขในช่วงตั้งแต่ 0 ถึง 99 ทันที ในกรณีนี้ตัวเลขที่สำคัญที่สุดของตัวเลขจะถูกใช้เป็นตัวอักษร (ซึ่งระบุในแนวนอน) - 0 ... 9 คือ ... และ ตัวเลขหลักต่ำในกรณีนี้จะแทนที่ช่วง 1 ... 10 จากนั้นจะมีการเพิ่มเพียงตัวเดียว บางทีตอนนี้แนวทางนี้ดูเหมือนจะไม่ชัดเจนนัก แต่นี่เป็นเรื่องของนิสัย

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

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

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


โปรดทราบว่าตามหลักการแล้ว เส้นโค้งความหนาแน่นของการแจกแจงของตัวเลขสุ่มจะมีลักษณะดังแสดงในรูปที่ 1 22.3. นั่นคือ ในกรณีที่เหมาะสม แต่ละช่วงเวลาจะรวมไว้ด้วย หมายเลขเดียวกันคะแนน: เอ็น ฉัน = เอ็น/เค , ที่ไหน เอ็นจำนวนคะแนนทั้งหมด เคจำนวนช่วงเวลา ฉัน= 1, , เค .

ข้าว. 22.3. แผนภาพความถี่ของตัวเลขสุ่ม
สร้างขึ้นตามทฤษฎีโดยเครื่องกำเนิดในอุดมคติ

ควรจำไว้ว่าการสร้างตัวเลขสุ่มตามอำเภอใจประกอบด้วยสองขั้นตอน:

  • การสร้างตัวเลขสุ่มที่ทำให้เป็นมาตรฐาน (นั่นคือ การกระจายอย่างสม่ำเสมอตั้งแต่ 0 ถึง 1)
  • การแปลงตัวเลขสุ่มที่ทำให้เป็นมาตรฐาน ฉันสู่ตัวเลขสุ่ม x ฉันซึ่งเผยแพร่ตามกฎหมายการแจกจ่าย (โดยพลการ) ที่ผู้ใช้กำหนดหรือตามระยะเวลาที่กำหนด

เครื่องกำเนิดตัวเลขสุ่มตามวิธีการรับตัวเลขแบ่งออกเป็น:

  • ทางกายภาพ;
  • ตาราง;
  • อัลกอริทึม

RNG ทางกายภาพ

ตัวอย่างของ RNG ทางกายภาพอาจเป็น: เหรียญ (“หัว” 1, “ก้อย” 0); ลูกเต๋า; กลองที่มีลูกศรแบ่งออกเป็นภาคที่มีตัวเลข เครื่องกำเนิดสัญญาณรบกวนฮาร์ดแวร์ (HS) ซึ่งใช้อุปกรณ์ระบายความร้อนที่มีเสียงดังเช่นทรานซิสเตอร์ (รูปที่ 22.422.5)

ข้าว. 22.4. แผนผังวิธีการฮาร์ดแวร์สำหรับการสร้างตัวเลขสุ่ม
ข้าว. 22.5. แผนภาพการรับตัวเลขสุ่มโดยใช้วิธีฮาร์ดแวร์
ภารกิจ “สร้างตัวเลขสุ่มโดยใช้เหรียญ”

สร้างตัวเลขสามหลักแบบสุ่มโดยแจกแจงสม่ำเสมอในช่วงตั้งแต่ 0 ถึง 1 โดยใช้เหรียญ ความแม่นยำเป็นทศนิยมสามตำแหน่ง

วิธีแรกในการแก้ปัญหา
โยนเหรียญ 9 ครั้ง และถ้าเหรียญตกบนหัว ให้เขียนลงไปว่า "0" ถ้าตกบนหัว ให้เขียนลงไปว่า "1" สมมติว่าผลการทดลองเราได้รับลำดับสุ่ม 100110100

วาดช่วงเวลาจาก 0 ถึง 1 อ่านตัวเลขตามลำดับจากซ้ายไปขวา แบ่งช่วงเวลาออกเป็นครึ่งหนึ่ง และแต่ละครั้งให้เลือกส่วนหนึ่งของช่วงเวลาถัดไป (ถ้าคุณได้ 0 ก็จะเป็นทางซ้าย ถ้าคุณได้ 1 แล้วอันที่ถูกต้อง) ดังนั้นคุณจึงสามารถไปยังจุดใดก็ได้ในช่วงเวลานั้นอย่างแม่นยำตามที่คุณต้องการ

ดังนั้น, 1 : ช่วงเวลาจะถูกแบ่งออกเป็นครึ่งหนึ่ง และเลือกครึ่งทางขวา ช่วงเวลาจะแคบลง: หมายเลขถัดไป 0 : ช่วงเวลาแบ่งออกเป็นครึ่ง และเลือกครึ่งซ้าย ช่วงเวลาจะแคบลง: หมายเลขถัดไป 0 : ช่วงเวลาแบ่งออกเป็นครึ่ง และเลือกครึ่งซ้าย ช่วงเวลาจะแคบลง: หมายเลขถัดไป 1 : ช่วงเวลาจะถูกแบ่งออกเป็นครึ่งหนึ่ง และเลือกครึ่งทางขวา ช่วงเวลาจะแคบลง:

ตามเงื่อนไขความแม่นยำของปัญหา พบวิธีแก้ไข: เป็นตัวเลขใดๆ จากช่วงเวลา เช่น 0.625

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

วิธีที่สองในการแก้ปัญหา
มาแบ่งลำดับไบนารี่ผลลัพธ์ 100110100 ออกเป็นสามกลุ่ม: 100, 110, 100 หลังจากแปลสิ่งเหล่านี้แล้ว เลขฐานสองในรูปทศนิยม เราได้: 4, 6, 4 แทนที่ "0." ข้างหน้า เราได้: 0.464 วิธีนี้สามารถผลิตตัวเลขได้ตั้งแต่ 0.000 ถึง 0.777 เท่านั้น (เนื่องจากค่าสูงสุดที่สามารถ "บีบออก" จากเลขฐานสองสามหลักได้คือ 111 2 = 7 8) ซึ่งจริงๆ แล้ว ตัวเลขเหล่านี้แสดงอยู่ในระบบเลขฐานแปด สำหรับการแปล ฐานแปดตัวเลขเข้า ทศนิยมมาดำเนินการเป็นตัวแทน:
0.464 8 = 4 8 1 + 6 8 2 + 4 8 3 = 0.6015625 10 = 0.602 10.
ดังนั้น จำนวนที่ต้องการคือ: 0.602

RNG แบบตาราง

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

ตารางที่ 22.1.
ตัวเลขสุ่ม สม่ำเสมอ
ตัวเลขสุ่มกระจายจาก 0 ถึง 1
ตัวเลขสุ่ม กระจายอย่างเท่าเทียมกัน
ตัวเลขสุ่ม 0 ถึง 1
9 2 9 2 0 4 2 6 0.929
9 5 7 3 4 9 0 3 0.204
5 9 1 6 6 5 7 6 0.269
… …

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

มีตารางที่ประกอบด้วยตัวเลขที่ตรวจสอบแบบสุ่มอย่างแน่นอน 500 ตัว (นำมาจากหนังสือของ I. G. Venetsky, V. I. Venetskaya "แนวคิดและสูตรทางคณิตศาสตร์และสถิติพื้นฐานในการวิเคราะห์ทางเศรษฐศาสตร์")

อัลกอริทึม RNG

ตัวเลขที่สร้างโดย RNG เหล่านี้จะเป็นการสุ่มหลอกเสมอ (หรือกึ่งสุ่ม) กล่าวคือ แต่ละหมายเลขที่สร้างขึ้นในภายหลังจะขึ้นอยู่กับตัวเลขก่อนหน้า:

ฉัน + 1 = ( ฉัน) .

ลำดับที่ประกอบด้วยตัวเลขดังกล่าวจะก่อให้เกิดการวนซ้ำ กล่าวคือ จำเป็นต้องมีวงจรที่ซ้ำกัน จำนวนอนันต์ครั้งหนึ่ง. วงจรที่เกิดซ้ำเรียกว่าช่วงเวลา

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

ลองพิจารณาวิธีการอัลกอริทึมหลายวิธีในการรับ RNG:

วิธีมิดสแควร์

มีเลขสี่หลักอยู่บ้าง 0 . หมายเลขนี้ถูกยกกำลังสองและป้อนเข้าไป 1. ต่อไปจาก 1 นำตัวเลขสุ่มตัวใหม่ที่อยู่ตรงกลาง (สี่หลักกลาง) มาเขียนลงไป 0 . จากนั้นให้ทำซ้ำขั้นตอนนี้ (ดูรูปที่ 22.6) โปรดทราบว่าในความเป็นจริงคุณไม่จำเป็นต้องใช้ตัวเลขสุ่ม กิจ, ก 0.กิจโดยมีศูนย์และจุดทศนิยมบวกทางด้านซ้าย ข้อเท็จจริงนี้สะท้อนให้เห็นดังในรูป 22.6 และในตัวเลขที่คล้ายกันถัดๆ ไป

ข้าว. 22.6. โครงร่างของวิธีกำลังสองเฉลี่ย

ข้อเสียของวิธีการ: 1) หากมีการวนซ้ำตัวเลข 0 จะเท่ากับศูนย์ จากนั้นตัวกำเนิดจะเสื่อมลง ดังนั้นการเลือกค่าเริ่มต้นที่ถูกต้องจึงเป็นสิ่งสำคัญ 0 ; 2) เครื่องกำเนิดจะทำซ้ำลำดับผ่าน nขั้นตอน (ใน สถานการณ์กรณีที่ดีที่สุด), ที่ไหน nตัวเลขหลัก 0 , ฐานของระบบตัวเลข

ตัวอย่างเช่นในรูป 22.6: ถ้าเป็นตัวเลข 0 จะถูกแสดงในระบบเลขฐานสอง จากนั้นลำดับของตัวเลขสุ่มหลอกจะถูกทำซ้ำใน 2 4 = 16 ขั้นตอน โปรดทราบว่าการทำซ้ำของลำดับอาจเกิดขึ้นเร็วกว่านี้หากเลือกหมายเลขเริ่มต้นได้ไม่ดี

วิธีการที่อธิบายไว้ข้างต้นเสนอโดย John von Neumann และมีอายุย้อนไปถึงปี 1946 เนื่องจากวิธีนี้ไม่น่าเชื่อถือ จึงถูกละทิ้งอย่างรวดเร็ว

วิธีการกลางผลิตภัณฑ์

ตัวเลข 0 คูณด้วย 1 จากผลลัพธ์ที่ได้รับ 2 ตรงกลางถูกดึงออกมา 2 * (นี่คือตัวเลขสุ่มอีกตัวหนึ่ง) แล้วคูณด้วย 1. ตัวเลขสุ่มที่ตามมาทั้งหมดคำนวณโดยใช้รูปแบบนี้ (ดูรูปที่ 22.7)

ข้าว. 22.7. โครงร่างวิธีการของผลิตภัณฑ์มัธยฐาน

วิธีการกวน

วิธีการสุ่มใช้การดำเนินการเพื่อเลื่อนเนื้อหาของเซลล์ไปทางซ้ายและขวาแบบวนรอบ แนวคิดของวิธีการมีดังนี้ ให้เซลล์เก็บหมายเลขเริ่มต้น 0 . เลื่อนเนื้อหาของเซลล์ไปทางซ้ายแบบวนรอบ 1/4 ของความยาวเซลล์เราจะได้ตัวเลขใหม่ 0 * . ในทำนองเดียวกัน หมุนเวียนเนื้อหาของเซลล์ 0 ไปทางขวาคูณ 1/4 ของความยาวเซลล์ เราจะได้เลขตัวที่สอง 0**. ผลรวมของตัวเลข 0* และ 0** ให้ตัวเลขสุ่มใหม่ 1. ไกลออกไป เข้ามาแล้ว 1 อัน 0 และทำซ้ำลำดับการทำงานทั้งหมด (ดูรูปที่ 22.8)


ข้าว. 22.8. แผนภาพวิธีการผสม

โปรดทราบว่าตัวเลขที่เกิดจากผลรวม 0* และ 0 ** อาจไม่พอดีกับเซลล์ทั้งหมด 1. ในกรณีนี้ จะต้องละทิ้งตัวเลขพิเศษออกจากตัวเลขผลลัพธ์ ให้เราอธิบายเรื่องนี้ในรูป 22.8 โดยที่เซลล์ทั้งหมดจะแสดงด้วยเลขฐานสองแปดหลัก อนุญาต 0 * = 10010001 2 = 145 10 , 0 ** = 10100001 2 = 161 10 , แล้ว 0 * + 0 ** = 100110010 2 = 306 10 . อย่างที่คุณเห็นตัวเลข 306 นั้นมี 9 หลัก (ในระบบเลขฐานสอง) และเซลล์ 1 (เช่นเดียวกับ 0) สามารถมีได้สูงสุด 8 บิต ดังนั้นก่อนจะใส่ค่าเข้าไป 1 จำเป็นต้องลบ "พิเศษ" หนึ่งบิตซ้ายสุดออกจากหมายเลข 306 ผลลัพธ์ที่ได้ 1 จะไม่ไปที่ 306 อีกต่อไป แต่เป็น 00110010 2 = 50 10 โปรดทราบว่าในภาษาเช่นปาสคาล "การตัด" บิตพิเศษเมื่อเซลล์ล้นจะดำเนินการโดยอัตโนมัติตามประเภทของตัวแปรที่ระบุ

วิธีสมภาคเชิงเส้น

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

ฉัน+ 1 = ม็อด( เค · ฉัน + , ) .

ลำดับของตัวเลขสุ่มที่ได้รับโดยใช้สูตรนี้เรียกว่า ลำดับที่สอดคล้องกันเชิงเส้น. ผู้เขียนหลายคนเรียกลำดับที่สอดคล้องกันเชิงเส้นเมื่อ = 0 วิธีคูณที่เท่ากันทุกประการ, และเมื่อ ≠ 0 — วิธีผสมที่สอดคล้องกัน.

สำหรับเครื่องกำเนิดไฟฟ้าคุณภาพสูงจำเป็นต้องเลือกค่าสัมประสิทธิ์ที่เหมาะสม จำเป็นต้องมีจำนวนนั้น มีขนาดค่อนข้างใหญ่เนื่องจากช่วงเวลานั้นไม่สามารถมีได้อีกต่อไป องค์ประกอบ ในทางกลับกัน การแบ่งที่ใช้ในวิธีนี้เป็นการดำเนินการที่ค่อนข้างช้า ดังนั้นสำหรับคอมพิวเตอร์ไบนารี่ ตัวเลือกเชิงตรรกะจะเป็น = 2 เอ็นเนื่องจากในกรณีนี้ การค้นหาส่วนที่เหลือของการหารจะลดลงภายในคอมพิวเตอร์เป็นการดำเนินการทางตรรกะแบบไบนารี "AND" การเลือกจำนวนเฉพาะที่ใหญ่ที่สุดก็เป็นเรื่องปกติเช่นกัน น้อยกว่า 2 เอ็น: ในวรรณกรรมเฉพาะทางได้รับการพิสูจน์แล้วว่าในกรณีนี้ตัวเลขลำดับต่ำของตัวเลขสุ่มผลลัพธ์ ฉัน+ 1 มีพฤติกรรมสุ่มเหมือนกับรุ่นเก่า ซึ่งส่งผลเชิงบวกต่อลำดับตัวเลขสุ่มโดยรวม ยกตัวอย่างหนึ่งใน ตัวเลขเมอร์เซนเท่ากับ 2 31 1 ดังนั้น = 2 31 1 .

ข้อกำหนดประการหนึ่งสำหรับลำดับที่สอดคล้องกันเชิงเส้นคือความยาวของคาบต้องยาวที่สุดเท่าที่จะเป็นไปได้ ความยาวของช่วงเวลาขึ้นอยู่กับค่า , เคและ . ทฤษฎีบทที่เรานำเสนอด้านล่างนี้ช่วยให้เราสามารถระบุได้ว่าเป็นไปได้หรือไม่ที่จะบรรลุช่วงเวลาดังกล่าว ความยาวสูงสุดสำหรับค่าเฉพาะ , เคและ .

ทฤษฎีบท. ลำดับสมภาคเชิงเส้นที่กำหนดโดยตัวเลข , เค , และ 0 มีคาบความยาว หากและหาก:

  • ตัวเลข และ ค่อนข้างง่าย
  • เค 1 ครั้ง พีสำหรับทุก ๆ ไพรม์ พีซึ่งเป็นตัวหาร ;
  • เค 1 เป็นผลคูณของ 4 ถ้า หลายเท่าของ 4

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

มีการพิจารณาว่าชุดตัวเลขสุ่มหลอกที่สร้างขึ้นจากข้อมูลจากตัวอย่างที่ 1 จะถูกทำซ้ำทุกๆ /4 หมายเลข. ตัวเลข ถามถูกตั้งค่าโดยพลการก่อนเริ่มการคำนวณ อย่างไรก็ตาม โปรดทราบว่าซีรีส์นี้ให้ความรู้สึกของการสุ่มในวงกว้าง เค(และดังนั้นจึง ถาม). ผลลัพธ์สามารถปรับปรุงได้บ้างถ้า แปลกและ เค= 1 + 4 · ถาม ในกรณีนี้ แถวจะซ้ำกันทุกแถว ตัวเลข หลังจากค้นหามานาน เคนักวิจัยตัดสินด้วยค่า 69069 และ 71365

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

วิธีการคูณเพื่อสร้างตัวเลขสุ่มเทียมเสนอโดย D. H. Lehmer ในปี 1949

ตรวจสอบคุณภาพของเครื่องกำเนิดไฟฟ้า

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

การตรวจสอบที่ดำเนินการมีสองประเภท:

  • ตรวจสอบความสม่ำเสมอของการกระจาย
  • การทดสอบความเป็นอิสระทางสถิติ

ตรวจสอบความสม่ำเสมอของการกระจายตัว

1) RNG ควรสร้างค่าใกล้เคียงกับค่าพารามิเตอร์ทางสถิติที่มีลักษณะเฉพาะของกฎสุ่มที่สม่ำเสมอ:

2) การทดสอบความถี่

การทดสอบความถี่ช่วยให้คุณทราบว่ามีตัวเลขจำนวนเท่าใดที่อยู่ในช่วงหนึ่งๆ ( – σ ; + σ ) นั่นคือ (0.5 0.2887; 0.5 + 0.2887) หรือท้ายที่สุดคือ (0.2113; 0.7887) เนื่องจาก 0.7887 0.2113 = 0.5774 เราสรุปได้ว่าใน RNG ที่ดี ประมาณ 57.7% ของตัวเลขสุ่มที่สุ่มออกมาทั้งหมดควรอยู่ในช่วงนี้ (ดูรูปที่ 22.9)

ข้าว. 22.9. แผนภาพความถี่ของ RNG ในอุดมคติ
กรณีตรวจสอบเพื่อทดสอบความถี่

นอกจากนี้ยังจำเป็นต้องคำนึงว่าจำนวนตัวเลขที่อยู่ในช่วง (0; 0.5) ควรเท่ากับจำนวนตัวเลขที่อยู่ในช่วงโดยประมาณ (0.5; 1)

3) การทดสอบไคสแควร์

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

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

แผนภาพความถี่ อ้างอิง RNG จะแสดงในรูป 22.10. เนื่องจากกฎการกระจายของ RNG อ้างอิงมีความสม่ำเสมอ ความน่าจะเป็น (ตามทฤษฎี) พี ฉันการรับตัวเลขเข้ามา ฉันช่วงเวลาที่ (ช่วงเวลาทั้งหมดนี้ เค) เท่ากับ พี ฉัน = 1/เค . และด้วยเหตุนี้ในแต่ละ เคช่วงเวลาจะตี เรียบโดย พี ฉัน · เอ็น ตัวเลข ( เอ็นจำนวนตัวเลขทั้งหมดที่สร้างขึ้น)

ข้าว. 22.10. แผนภาพความถี่ของ RNG อ้างอิง

RNG จริงจะสร้างตัวเลขที่กระจาย (และไม่จำเป็นต้องเท่ากัน!) เคช่วงเวลาและแต่ละช่วงเวลาจะมี n ฉันตัวเลข (รวม n 1 + n 2 + + n เค = เอ็น ). เราจะทราบได้อย่างไรว่า RNG ที่กำลังทดสอบนั้นดีแค่ไหน และใกล้กับข้อมูลอ้างอิงมากน้อยเพียงใด การพิจารณาความแตกต่างกำลังสองระหว่างจำนวนผลลัพธ์ของตัวเลขค่อนข้างสมเหตุสมผล n ฉันและ "การอ้างอิง" พี ฉัน · เอ็น . มาบวกกันและผลลัพธ์คือ:

χ 2 ประสบการณ์ = ( n 1 พี 1 · เอ็น) 2 + (n 2 พี 2 · เอ็น) 2 + + ( n เค – พี เค · เอ็น) 2 .

จากสูตรนี้จะตามมาว่ายิ่งความแตกต่างในแต่ละเงื่อนไขน้อยลง (และด้วยเหตุนี้ มูลค่าน้อยลงχ 2 ประสบการณ์ ) ยิ่งกฎการกระจายตัวเลขสุ่มที่สร้างโดย RNG จริงมีความสม่ำเสมอมากขึ้นเท่าใด ก็จะมีความสม่ำเสมอมากขึ้นเท่านั้น

ในนิพจน์ที่แล้ว แต่ละเงื่อนไขถูกกำหนดให้มีน้ำหนักเท่ากัน (เท่ากับ 1) ซึ่งอันที่จริงอาจไม่เป็นความจริง ดังนั้นสำหรับสถิติไคสแควร์ จึงจำเป็นต้องทำให้แต่ละรายการเป็นมาตรฐาน ฉันเทอมที่ 3 หารด้วย พี ฉัน · เอ็น :

สุดท้ายนี้ มาเขียนนิพจน์ผลลัพธ์ให้กระชับยิ่งขึ้นและทำให้ง่ายขึ้น:

เราได้รับค่าทดสอบไคสแควร์สำหรับ ทดลองข้อมูล.

ในตาราง ให้ 22.2 ตามทฤษฎีค่าไคสแควร์ (χ 2 ตามทฤษฎี) โดยที่ ν = เอ็น 1 คือจำนวนระดับความเป็นอิสระ พีนี่คือระดับความเชื่อมั่นที่ผู้ใช้ระบุซึ่งบ่งชี้ว่า RNG ควรตอบสนองความต้องการของการกระจายแบบสม่ำเสมอมากน้อยเพียงใด หรือ พี — คือความน่าจะเป็นที่ค่าทดลองของ χ 2 exp จะน้อยกว่าตาราง (เชิงทฤษฎี) χ 2 ตามทฤษฎี หรือเท่ากับมัน.

ตารางที่ 22.2.
เปอร์เซ็นต์บางส่วนของการแจกแจง χ 2
พี = 1% พี = 5% พี = 25% พี = 50% พี = 75% พี = 95% พี = 99%
ν = 1 0.00016 0.00393 0.1015 0.4549 1.323 3.841 6.635
ν = 2 0.02010 0.1026 0.5754 1.386 2.773 5.991 9.210
ν = 3 0.1148 0.3518 1.213 2.366 4.108 7.815 11.34
ν = 4 0.2971 0.7107 1.923 3.357 5.385 9.488 13.28
ν = 5 0.5543 1.1455 2.675 4.351 6.626 11.07 15.09
ν = 6 0.8721 1.635 3.455 5.348 7.841 12.59 16.81
ν = 7 1.239 2.167 4.255 6.346 9.037 14.07 18.48
ν = 8 1.646 2.733 5.071 7.344 10.22 15.51 20.09
ν = 9 2.088 3.325 5.899 8.343 11.39 16.92 21.67
ν = 10 2.558 3.940 6.737 9.342 12.55 18.31 23.21
ν = 11 3.053 4.575 7.584 10.34 13.70 19.68 24.72
ν = 12 3.571 5.226 8.438 11.34 14.85 21.03 26.22
ν = 15 5.229 7.261 11.04 14.34 18.25 25.00 30.58
ν = 20 8.260 10.85 15.45 19.34 23.83 31.41 37.57
ν = 30 14.95 18.49 24.48 29.34 34.80 43.77 50.89
ν = 50 29.71 34.76 42.94 49.33 56.33 67.50 76.15
ν > 30 ν + ตร.ม.(2 ν ) · x พี+ 2/3 · x 2 พี 2/3 + โอ(1/ตร.ม.( ν ))
x พี = 2.33 1.64 0.674 0.00 0.674 1.64 2.33

ถือว่ายอมรับได้ พี จาก 10% ถึง 90%.

ถ้า χ 2 ประสบการณ์ มากกว่าทฤษฎี χ 2 มาก (นั่นคือ พีมีขนาดใหญ่) จากนั้นเครื่องกำเนิดไฟฟ้า ไม่พอใจข้อกำหนดของการแจกแจงแบบสม่ำเสมอเนื่องจากค่าที่สังเกตได้ n ฉันไปไกลจากทฤษฎีมากเกินไป พี ฉัน · เอ็น และไม่สามารถถือเป็นการสุ่มได้ กล่าวอีกนัยหนึ่งคือมีการติดตั้งขนาดใหญ่มาก ช่วงความมั่นใจว่าข้อจำกัดด้านตัวเลขเริ่มหลวมมาก ข้อกำหนดด้านตัวเลขเริ่มอ่อนแอ ในกรณีนี้จะสังเกตเห็นข้อผิดพลาดสัมบูรณ์ที่มีขนาดใหญ่มาก

แม้แต่ D. Knuth ในหนังสือของเขาเรื่อง "The Art of Programming" ยังตั้งข้อสังเกตว่าการมี χ 2 exp. โดยทั่วไปสำหรับคนตัวเล็กมันก็ไม่ดีเช่นกันแม้ว่าเมื่อมองแวบแรกจะดูยอดเยี่ยมจากมุมมองของความสม่ำเสมอ จริงๆ แล้วใช้ชุดตัวเลข 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6 ซึ่งเหมาะอย่างยิ่งจากมุมมองของความสม่ำเสมอและ χ ประสบการณ์ 2 ครั้ง จะเป็นศูนย์ในทางปฏิบัติ แต่คุณไม่น่าจะจดจำพวกมันเป็นการสุ่มได้

ถ้า χ 2 ประสบการณ์ น้อยกว่าทฤษฎี χ 2 มาก (นั่นคือ พีเล็ก) จากนั้นเครื่องกำเนิด ไม่พอใจข้อกำหนดของการแจกแจงแบบสม่ำเสมอแบบสุ่ม เนื่องจากค่าที่สังเกตได้ n ฉันใกล้เคียงกับทฤษฎีมากเกินไป พี ฉัน · เอ็น และไม่สามารถถือเป็นการสุ่มได้

แต่ถ้า χ 2 ประสบการณ์ อยู่ในช่วงที่แน่นอนระหว่างค่าสองค่าของทฤษฎี χ 2 หรือ ซึ่งสอดคล้องกัน เช่น พี= 25% และ พี= 50% จากนั้นเราสามารถสรุปได้ว่าค่าตัวเลขสุ่มที่สร้างโดยเซ็นเซอร์นั้นเป็นการสุ่มโดยสมบูรณ์

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

ดังนั้นขั้นตอนการตรวจสอบจึงเป็นดังนี้

ทดสอบความเป็นอิสระทางสถิติ

1) การตรวจสอบความถี่ของการเกิดตัวเลขในลำดับ

ลองดูตัวอย่าง หมายเลขสุ่ม 0.2463389991 ประกอบด้วยตัวเลข 2463389991 และหมายเลข 0.5467766618 ประกอบด้วยตัวเลข 5467766618 การเชื่อมต่อลำดับของตัวเลขเรามี: 24633899915467766618

เป็นที่ชัดเจนว่าความน่าจะเป็นทางทฤษฎี พี ฉันการสูญเสีย ฉันหลักที่ (ตั้งแต่ 0 ถึง 9) เท่ากับ 0.1

2) การตรวจสอบลักษณะของชุดตัวเลขที่เหมือนกัน

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

ในตัวอย่าง “24633899915467766618” พบ 2 ชุดความยาว 2 (33 และ 77) นั่นคือ n 2 = 2 และ 2 อนุกรมความยาว 3 (999 และ 666) นั่นคือ n 3 = 2 .

ความน่าจะเป็นที่อนุกรมของความยาวจะเกิดขึ้น เท่ากับ: พี = 9 10 (ตามทฤษฎี) นั่นคือ ความน่าจะเป็นที่ซีรีส์หนึ่งจะมีความยาวอักขระเท่ากับ: พี 1 = 0.9 (ตามทฤษฎี) ความน่าจะเป็นที่จะมีอักขระสองตัวปรากฏเป็นชุดคือ: พี 2 = 0.09 (ตามทฤษฎี) ความน่าจะเป็นที่จะมีอักขระสามตัวปรากฏเป็นชุดคือ: พี 3 = 0.009 (ตามทฤษฎี)

ตัวอย่างเช่น ความน่าจะเป็นที่ซีรีส์หนึ่งจะมีความยาวหนึ่งอักขระ พี = 0.9 เนื่องจากสามารถมีได้เพียงสัญลักษณ์เดียวจาก 10 สัญลักษณ์และมีทั้งหมด 9 สัญลักษณ์ (ศูนย์ไม่นับ) และความน่าจะเป็นที่สัญลักษณ์ “XX” ที่เหมือนกันสองตัวจะปรากฏเรียงกันเป็น 0.1 · 0.1 · 9 นั่นคือความน่าจะเป็นที่ 0.1 ที่สัญลักษณ์ “X” จะปรากฏในตำแหน่งแรกคูณด้วยความน่าจะเป็นที่ 0.1 ที่ สัญลักษณ์เดียวกันจะปรากฏในตำแหน่งที่สอง “X” และคูณด้วยจำนวนชุดดังกล่าว 9

ความถี่ของการเกิดอนุกรมคำนวณโดยใช้สูตรไคสแควร์ที่เราพูดถึงก่อนหน้านี้โดยใช้ค่าต่างๆ พี .

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

โดยสรุป เราสังเกตว่าบทที่สามของหนังสือ The Art of Programming (เล่ม 2) ของ Donald E. Knuth เน้นไปที่การศึกษาตัวเลขสุ่มโดยเฉพาะ มันเรียน วิธีการต่างๆการสร้างตัวเลขสุ่ม การทดสอบความสุ่มทางสถิติ และการแปลงตัวเลขสุ่มแบบกระจายสม่ำเสมอไปเป็นรูปแบบอื่น ตัวแปรสุ่ม. มีมากกว่าสองร้อยหน้าสำหรับการนำเสนอเนื้อหานี้

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

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

“โทรออกอัตโนมัติ”

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

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

สถิติการชนะ

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

ในเดือนมีนาคม 2012 คู่รักชาวสหรัฐอเมริกาถูกรางวัลแจ็กพอตมหาศาล 218 ล้านดอลลาร์จากลอตเตอรีนิวยอร์ก พวกเขาไม่ได้พัฒนา กลยุทธ์ลอตเตอรี(อ่านหัวข้อ. กลยุทธ์การเล่นเกม) แต่ใช้ฟังก์ชัน "หมุนหมายเลขอัตโนมัติ" เท่านั้น

ผู้ชนะ บันทึกการจับสลากสัญชาติอเมริกัน ลอตเตอรี่ลอตเตอรี่ซึ่งแบ่งเงิน 586 ล้านดอลลาร์เท่าๆ กัน กรอกตั๋วโดยใช้เครื่องสร้างตัวเลขสุ่ม

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

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

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

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

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

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

อุปกรณ์สล็อตแมชชีน

ทันสมัย เครื่องสล็อต http://igrat-avtomati-wulcan.com มีอัลกอริธึมที่ค่อนข้างซับซ้อนซึ่งสร้างชุดค่าผสมที่ชนะ แบ่งออกเป็นส่วนๆ ได้แก่ เซ็นเซอร์ในรูปแบบเครื่องปั่นไฟ, เคาน์เตอร์รับชำระเงินและแจกรางวัล, ระบบจัดเก็บสำหรับ รางวัลใหญ่ในรูปแบบของแจ็คพอต อัลกอริธึมในรูปแบบของเคอร์เนลในการออกเงินที่ชนะ อัลกอริธึมเหล่านี้ถูกสร้างเป็นโครงสร้างทางกลในรูปแบบของสล็อตหรือรูเล็ต

เซ็นเซอร์ของการสุ่มและตัวเลข (รงจ.)

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

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

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

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

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

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

  • การแปล

ลองจินตนาการถึงปี 1995 และคุณกำลังจะซื้อสินค้าออนไลน์ครั้งแรก คุณเปิดเบราว์เซอร์ Netscape และจิบกาแฟในขณะนั้น หน้าแรกโหลดช้า เส้นทางของคุณอยู่ที่ Amazon.com - ร้านค้าออนไลน์ใหม่ที่เพื่อนบอกคุณ เมื่อถึงขั้นตอนการซื้อให้เสร็จสิ้นและป้อนข้อมูลส่วนตัว ที่อยู่ในเบราว์เซอร์จะเปลี่ยนจาก “http” เป็น “https” นี่เป็นการส่งสัญญาณว่าคอมพิวเตอร์ได้สร้างการเชื่อมต่อที่เข้ารหัสกับเซิร์ฟเวอร์ Amazon แล้ว ตอนนี้คุณสามารถส่งข้อมูลไปยังเซิร์ฟเวอร์ได้แล้ว บัตรเครดิตโดยไม่ต้องกลัวมิจฉาชีพที่ต้องการดักจับข้อมูล

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

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

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

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

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

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

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

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

ความพยายามครั้งแรกของ Intelการสร้างตัวสร้างตัวเลขสุ่มที่ดีที่สุดบนพีซีทั่วไปนั้นย้อนกลับไปในปี 1999 เมื่อ Intel เปิดตัวส่วนประกอบ Firmware Hub สำหรับชิปเซ็ต ตัวสร้างตัวเลขสุ่ม (PDF) ของชิปคือการออกแบบออสซิลเลเตอร์วงแหวนแบบอะนาล็อกที่ตรวจจับสัญญาณรบกวนความร้อนจากตัวต้านทาน จากนั้นจะขยายสัญญาณ และใช้สัญญาณผลลัพธ์เพื่อเปลี่ยนแปลงระยะเวลาของตัวสร้างสัญญาณนาฬิกาที่ค่อนข้างช้า สำหรับ “เครื่องหมายถูก” ที่คาดเดาไม่ได้แต่ละตัวของเครื่องกำเนิดไฟฟ้าที่ช้านี้ ไมโครเซอร์กิตจะกำหนดความถี่การสั่นของเครื่องกำเนิดไฟฟ้าเครื่องที่สองที่รวดเร็ว ซึ่งจะเปลี่ยนค่าของมันระหว่างสถานะไบนารี่สองสถานะเป็นประจำ: 0 และ 1 ผลลัพธ์ที่ได้คือลำดับของเลขศูนย์และเลขหนึ่งที่คาดเดาไม่ได้

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

นั่นเป็นเหตุผลว่าทำไมในปี 2008 Intel จึงเริ่มพัฒนาเครื่องสร้างตัวเลขสุ่มที่ทำงานบนพื้นฐานดิจิทัลทั้งหมด นักวิจัยที่บริษัทในฮิลส์โบโร (ออริกอน สหรัฐอเมริกา) ร่วมกับวิศวกรที่ Design Lab ในบังกาลอร์ (อินเดีย) เริ่มศึกษาปัญหาสำคัญ นั่นคือ วิธีรับกระแสบิตแบบสุ่มโดยไม่ต้องใช้วงจรแอนะล็อก

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

เครื่องกำเนิดอนาล็อกรุ่นก่อนของเราสามารถสร้างตัวเลขสุ่มได้เพียงสองสามร้อยกิโลบิตต่อวินาที ในขณะที่เครื่องใหม่สร้างตัวเลขสุ่มในอัตราประมาณ 3 Gb/s เริ่มต้นด้วยการรวบรวมค่าสุ่มเกือบของอินเวอร์เตอร์สองตัวในบล็อก 512 บิต บล็อกเหล่านี้จะถูกแบ่งออกเป็นคู่ของตัวเลข 256 บิตในเวลาต่อมา แน่นอนว่าหาก 512 บิตดั้งเดิมไม่ได้สุ่มโดยสมบูรณ์ ตัวเลข 256 บิตเหล่านี้จะไม่ถูกสุ่มโดยสมบูรณ์เช่นกัน แต่สามารถนำมารวมกันทางคณิตศาสตร์เพื่อสร้างตัวเลข 256 บิตที่ใกล้เคียงกับอุดมคติ


สามระดับของตัวเลข: ตัวสร้างตัวเลขสุ่มของ Intel Bull Mountain ป้องกันการเปลี่ยนแปลงในการคาดเดาผ่านกระบวนการสามขั้นตอน ขั้นแรก วงจรดิจิทัลจะสร้างสตรีมของบิตสุ่ม จากนั้น “นอร์มัลไลเซอร์” (ครีมนวดผม) จะสร้างเมล็ดพืชแบบสุ่มที่ดีตามสตรีมนี้ ในขั้นตอนที่สาม ตัวสร้างตัวเลขสุ่มเทียมจะสร้างกระแสตัวเลขเพื่อใช้ในซอฟต์แวร์

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

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

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

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

รับประกันความสุ่มไม่เพียงพอหากค่าสุ่มไม่ได้สร้างเร็วพอที่จะเป็นไปตามมาตรฐาน แม้ว่าวงจรฮาร์ดแวร์จะสร้างสตรีมได้เร็วกว่ารุ่นก่อนมาก แต่ก็ยังไม่เพียงพอสำหรับบางคน งานที่ทันสมัย. เพื่อให้ Bull Mountain สามารถสร้างตัวเลขสุ่มได้เร็วเท่ากับซอฟต์แวร์ตัวสร้างตัวเลขสุ่มหลอกที่สร้างสตรีม แต่ในขณะเดียวกันก็บันทึก คุณภาพสูงตัวเลขสุ่ม เราได้เพิ่มอีกหนึ่งระดับในโครงการ ในที่นี้ ตัวเลขสุ่ม 256 บิตถูกใช้เป็นเมล็ดสุ่มที่ปลอดภัยด้วยการเข้ารหัส เพื่อสร้างตัวเลขสุ่มหลอก 128 บิตจำนวนมาก เนื่องจากการจัดส่งตัวเลข 256 บิตที่ 3 GHz จึงมีวัสดุเพียงพอที่จะรับประกันว่าจะสร้างคีย์การเข้ารหัสได้อย่างรวดเร็ว

คำสั่งใหม่ที่เรียกว่า RdRand อนุญาตให้โปรแกรมที่ต้องการตัวเลขสุ่มส่งคำขอไปยังฮาร์ดแวร์ที่ผลิตคำสั่งเหล่านั้น ออกแบบมาสำหรับโปรเซสเซอร์ Intel 64 บิต คำสั่ง RdRand เป็นกุญแจสำคัญในการสร้าง Bull Mountain มันแยกค่าสุ่ม 16-, 32- หรือ 64- บิตและวางไว้ในรีจิสเตอร์ที่สามารถเข้าถึงโปรแกรมได้ คำสั่ง RdRand เผยแพร่สู่สาธารณะเมื่อประมาณหนึ่งปีที่แล้ว และโปรเซสเซอร์ Intel ตัวแรกที่รองรับคือ Ivy Bridge ชิปเซ็ตใหม่เร็วกว่ารุ่นก่อน 37% และขนาดขององค์ประกอบขั้นต่ำลดลงจาก 32 เป็น 22 นาโนเมตร การเพิ่มประสิทธิภาพโดยรวมนั้นสอดคล้องกับความต้องการของเครื่องสร้างตัวเลขสุ่มของเรา

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

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