กลับไปหน้าบทความ

อ่าน 1 นาที

ไม่มีชื่อบทความ

ใน ตัวสร้างเลขสุ่มเทียม (PRNG) รอบสมบูรณ์ หรือ คาบสมบูรณ์ คือพฤติกรรมของ PRNG บนเซตของสถานะที่ถูกต้อง โดยเฉพาะอย่างยิ่ง PRNG จะมีรอบสมบูรณ์ก็ต่อเมื่อ สำหรับ สถานะเริ่มต้น...

ครบวงจร

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

ข้อจำกัดเกี่ยวกับพารามิเตอร์ของ PRNG ที่จำเป็นต่อการทำงานครบวงจรนั้น ทราบกันเฉพาะใน PRNG บางประเภทเท่านั้น เช่นตัวสร้างแบบเชิงเส้น (linear congruential generator)และรีจิสเตอร์เลื่อนป้อนกลับเชิงเส้น (linear-feedback shift register ) ไม่มีวิธีการทั่วไปที่จะตรวจสอบว่าอัลกอริทึม PRNG ทำงานครบวงจรหรือไม่ เว้นแต่จะใช้พื้นที่สถานะจนหมด ซึ่งอาจมีขนาดใหญ่มากเมื่อเทียบกับขนาดของสถานะภายในของอัลกอริทึม

ตัวอย่างที่ 1 (ในภาษา C/C++)

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

ค่าเริ่มต้น ของจำนวน เต็มที่ไม่มีเครื่องหมาย= 0 ; ขนาดตัวอย่างที่ไม่ระบุเครื่องหมาย= 3000 ; จำนวนที่สร้างขึ้นที่ไม่ระบุเครื่องหมาย= ค่าเริ่ม ต้น% ขนาดตัวอย่าง; ค่าเพิ่มขึ้นที่ไม่ระบุเครื่องหมาย= 7 ;สำหรับ( unsigned int iterator = 0 ; iterator < sample_size ; ++ iterator ) { generated_number = ( generated_number + increment ) % sample_size ; }

ตัวอย่างที่ 1 (ในภาษา Python)

# ตัวสร้างค่าที่ทำงานครบวงจรdef cycle ( seed : int , sample_size : int , increment : int ): nb = seed for i in range ( sample_size ): nb = ( nb + increment ) % sample_size yield nb# ตัวอย่างค่าseed = 17 sample_size = 100 increment = 13# พิมพ์ตัวเลขทั้งหมดprint ( list ( cycle ( seed , sample_size , increment )))# ตรวจสอบว่าตัวเลขทั้งหมดถูกสร้างขึ้นอย่างถูกต้องassert set ( cycle ( seed , sample_size , increment )) == set ( range ( sample_size ))

ดูเพิ่มเติม

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ไม่มีชื่อบทความ

ใน ตัวสร้างเลขสุ่มเทียม (PRNG) รอบสมบูรณ์ หรือ คาบสมบูรณ์ คือพฤติกรรมของ PRNG บนเซตของสถานะที่ถูกต้อง โดยเฉพาะอย่างยิ่ง PRNG จะมีรอบสมบูรณ์ก็ต่อเมื่อ สำหรับ สถานะเริ่มต้น...

ตัวอย่างที่ 1 (ในภาษา C/C++)

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

ตัวอย่างที่ 1 (ในภาษา Python)

# ตัวสร้างค่าที่ทำงานครบวงจร def cycle ( seed : int , sample_size : int , increment : int ): nb = seed for i in range ( sample_size ): nb = ( nb + increment ) % sample_size yield nb # ตัวอย่างค่า seed = 17 sample_size = 100 increment = 13 # พิมพ์ตัวเลขทั้งหมด...

ดูเพิ่มเติม

เครื่องกำเนิดเชิงเส้นแบบสอดคล้อง ซอร์ชิฟต์