คำถามนี้เกี่ยวข้องกับปัญหาวิศวกรรมซอฟต์แวร์ในทางปฏิบัติเป็นหลัก แต่ฉันอยากรู้ว่านักทฤษฎีสามารถให้ข้อมูลเชิงลึกกับมันได้หรือไม่
พูดง่ายๆก็คือฉันมีการจำลอง Monte Carlo ที่ใช้เครื่องกำเนิดตัวเลขเทียมและฉันต้องการที่จะขนานมันเพื่อให้มีคอมพิวเตอร์ 1,000 เครื่องที่ใช้การจำลองแบบเดียวกันในแบบคู่ขนาน ดังนั้นฉันจึงต้องการสตรีมหมายเลขสุ่มเทียม 1,000 สตรีม
เราสามารถมีสตรีมขนาน 1,000 รายการด้วยคุณสมบัติต่อไปนี้ได้หรือไม่? ที่นี่ควรเป็น PRNG ที่เป็นที่รู้จักและศึกษาอย่างกว้างขวางพร้อมกับคุณสมบัติเชิงทฤษฎีและเชิงประจักษ์ทุกชนิด
ลำธารนั้นดีพอ ๆ กับสิ่งที่ฉันจะได้รับถ้าฉันใช้และแยกกระแสที่สร้างโดยเป็น 1000 สตรีม
สร้างหมายเลขถัดไปในกระแสใด ๆ ที่เป็น (เกือบ) เป็นอย่างรวดเร็วสร้างหมายเลขถัดไปกับX
ใส่อย่างอื่น: เราสามารถรับสตรีมอิสระหลายรายการ "ฟรี" ได้หรือไม่
แน่นอนว่าถ้าเราใช้เพียงทิ้งหมายเลข 999 และหยิบ 1 เสมอเราก็จะได้ทรัพย์สิน 1 แต่เราจะเสียเวลาในการดำเนินการตามตัวคูณ 1000
ความคิดง่ายๆคือใช้สำเนา 1,000 ชุดโดยมีเมล็ด 1, 2, ... , 1,000 นี่จะเป็นไปอย่างรวดเร็ว แต่ก็ไม่ชัดเจนว่าลำธารมีคุณสมบัติทางสถิติที่ดีหรือไม่
หลังจาก Googling ฉันพบตัวอย่างต่อไปนี้:
SPRNGห้องสมุดดูเหมือนว่าจะได้รับการออกแบบสำหรับตรงจุดประสงค์นี้และสนับสนุนPRNGs หลาย
Twers Mersenneดูเหมือนว่าจะเป็น PRNG ยอดนิยมในทุกวันนี้และฉันพบว่ามีการอ้างอิงถึงตัวแปรที่สามารถสร้างกระแสข้อมูลจำนวนมากในแบบคู่ขนาน
แต่ทั้งหมดนี้ยังห่างไกลจากพื้นที่การวิจัยของฉันเองฉันไม่สามารถเข้าใจได้ว่าอะไรคือสิ่งที่ล้ำสมัยและสิ่งก่อสร้างที่ใช้งานได้ดีไม่เพียง แต่ในทางทฤษฎีเท่านั้น แต่ยังใช้ในทางปฏิบัติด้วย
คำอธิบายบางอย่าง: ฉันไม่ต้องการคุณสมบัติการเข้ารหัสใด ๆ นี่คือการคำนวณทางวิทยาศาสตร์ ฉันจะต้องมีพันล้านของตัวเลขสุ่มเพื่อให้เราสามารถลืมกำเนิดใด ๆ กับระยะเวลาของ 32
แก้ไข:ฉันไม่สามารถใช้ RNG จริงได้ ฉันต้องการ PRNG ที่กำหนดขึ้นเอง ประการแรกมันช่วยได้มากในการแก้ไขข้อบกพร่องและทำให้ทุกอย่างสามารถทำซ้ำได้ ประการที่สองมันช่วยให้ฉันทำเช่นการหาค่ามัธยฐานได้อย่างมีประสิทธิภาพมากโดยการใช้ประโยชน์จากความจริงที่ว่าฉันสามารถใช้รูปแบบหลายผ่าน (ดูคำถามนี้ )
แก้ไข 2: : มีคำถามที่เกี่ยวข้องอย่างใกล้ชิด @ StackOverflow เป็นเครื่องกำเนิดไฟฟ้าจำนวนสุ่มหลอกสำหรับสภาพแวดล้อมแบบคลัสเตอร์