ครบวงจร
ในตัวสร้างเลขสุ่มเทียม (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 ))