ตัวกำเนิดตัวเลขแบบหลอกทั้งหมดเป็นระยะหรือไม่?


24

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

ฉันหมายถึงเป็นระยะ ๆ เช่นเดียวกับตัวเลขที่มีเหตุผลพวกเขาในที่สุดสร้างลำดับเป็นระยะ ...

และการสุ่มหลอกหมายถึงอัลกอริทึม / การสร้างตัวเลขทางคณิตศาสตร์ของการสุ่ม ...


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

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

คำตอบ:


39

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

อย่างไรก็ตามความยาวของรอบระยะเวลาอาจมหาศาล ตัวอย่างเช่น PRNG ที่มีสถานะการเข้ารหัสที่ 128 บิตอาจวนรอบหนึ่งครั้งทุกบิตของการส่งออกและดังนั้นแม้ว่าการส่งออกหนึ่งบิตทุก ๆ นาโนวินาทีระบบสุริยะจะตายก่อน PRNG ซ้ำ2128

22


ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
DW

ลิงก์ไปยังการแชทเสียหาย เป็นไปได้ไหมที่จะเห็นบันทึกการสนทนา? : / @DW
oink

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

7

PRNG เป็นเครื่องจักรของรัฐ หากพวกเขาอยู่ในอินพุตภายในเท่านั้น (ตรงกันข้ามกับ Poker Stars RNG ซึ่งเป็นการรวมกันของฮาร์ดแวร์และซอฟต์แวร์การรวมตัวเองอย่างต่อเนื่องจาก ... ตัวอย่างเสียง) คุณจะได้รับ (C, S1, ... ) โดยที่ C คือค่าปัจจุบัน (หรือก่อนหน้า) และ S1, ... อาจเป็นชุดของสถานะ:

หากมีค่า N ที่เป็นไปได้ (เนื่องจากหน่วยความจำมีขอบเขต) ของ C และคุณวนซ้ำ N + 1 ครั้งคุณจะกดค่าเดียวกันสำหรับ C อย่างน้อยสองครั้ง หากคุณวนซ้ำ 2N + 1 ครั้งคุณจะกดค่าเดียวกันสำหรับ C อย่างน้อย 3 ครั้ง

ให้ T = (Ct, S1t, S2t) เป็นสถานะที่แน่นอน (ค่าปัจจุบันและสถานะอื่น ๆ )
ให้ M = # {ค่าสำหรับ S1} X {ค่าสำหรับ S2} X {... } เป็นหัวใจสำคัญของการรวมสถานะที่เป็นไปได้ (อีกครั้ง: เนื่องจากหน่วยความจำมีขอบเขต)

หากคุณวนซ้ำ NM + 1 คูณ algoritm คุณจะถึงอย่างน้อยสองเท่าของรัฐเดียวกัน (Ct, S1t, S2t, ... ) ดังนั้นการสร้างค่าเอาต์พุตเดียวกันและลำดับรัฐต่อไปนี้เหมือนกันมากกว่าครั้งแรกและ ดังนั้นจึงกลายเป็นระยะ


6

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

110111001011101111000...

(เตรียม "." และเรียกว่าค่าคงที่ของ Champernowneไบนารี)

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

π2

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

2128

2128

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.