เครื่องกำเนิดไฟฟ้าจำนวนเทียมหลอกแบบขนาน


20

คำถามนี้เกี่ยวข้องกับปัญหาวิศวกรรมซอฟต์แวร์ในทางปฏิบัติเป็นหลัก แต่ฉันอยากรู้ว่านักทฤษฎีสามารถให้ข้อมูลเชิงลึกกับมันได้หรือไม่


พูดง่ายๆก็คือฉันมีการจำลอง Monte Carlo ที่ใช้เครื่องกำเนิดตัวเลขเทียมและฉันต้องการที่จะขนานมันเพื่อให้มีคอมพิวเตอร์ 1,000 เครื่องที่ใช้การจำลองแบบเดียวกันในแบบคู่ขนาน ดังนั้นฉันจึงต้องการสตรีมหมายเลขสุ่มเทียม 1,000 สตรีม

เราสามารถมีสตรีมขนาน 1,000 รายการด้วยคุณสมบัติต่อไปนี้ได้หรือไม่? ที่นี่ควรเป็น PRNG ที่เป็นที่รู้จักและศึกษาอย่างกว้างขวางพร้อมกับคุณสมบัติเชิงทฤษฎีและเชิงประจักษ์ทุกชนิดX

  1. ลำธารนั้นดีพอ ๆ กับสิ่งที่ฉันจะได้รับถ้าฉันใช้และแยกกระแสที่สร้างโดยเป็น 1000 สตรีมXX

  2. สร้างหมายเลขถัดไปในกระแสใด ๆ ที่เป็น (เกือบ) เป็นอย่างรวดเร็วสร้างหมายเลขถัดไปกับXX

ใส่อย่างอื่น: เราสามารถรับสตรีมอิสระหลายรายการ "ฟรี" ได้หรือไม่

แน่นอนว่าถ้าเราใช้เพียงทิ้งหมายเลข 999 และหยิบ 1 เสมอเราก็จะได้ทรัพย์สิน 1 แต่เราจะเสียเวลาในการดำเนินการตามตัวคูณ 1000X

ความคิดง่ายๆคือใช้สำเนา 1,000 ชุดโดยมีเมล็ด 1, 2, ... , 1,000 นี่จะเป็นไปอย่างรวดเร็ว แต่ก็ไม่ชัดเจนว่าลำธารมีคุณสมบัติทางสถิติที่ดีหรือไม่X


หลังจาก Googling ฉันพบตัวอย่างต่อไปนี้:

  • SPRNGห้องสมุดดูเหมือนว่าจะได้รับการออกแบบสำหรับตรงจุดประสงค์นี้และสนับสนุนPRNGs หลาย

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

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


คำอธิบายบางอย่าง: ฉันไม่ต้องการคุณสมบัติการเข้ารหัสใด ๆ นี่คือการคำนวณทางวิทยาศาสตร์ ฉันจะต้องมีพันล้านของตัวเลขสุ่มเพื่อให้เราสามารถลืมกำเนิดใด ๆ กับระยะเวลาของ<232 32

แก้ไข:ฉันไม่สามารถใช้ RNG จริงได้ ฉันต้องการ PRNG ที่กำหนดขึ้นเอง ประการแรกมันช่วยได้มากในการแก้ไขข้อบกพร่องและทำให้ทุกอย่างสามารถทำซ้ำได้ ประการที่สองมันช่วยให้ฉันทำเช่นการหาค่ามัธยฐานได้อย่างมีประสิทธิภาพมากโดยการใช้ประโยชน์จากความจริงที่ว่าฉันสามารถใช้รูปแบบหลายผ่าน (ดูคำถามนี้ )

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


6
ทำไมคุณไม่ใช้ PRNG กับเมล็ดที่สุ่มตัวอย่างเมล็ด ฉันไม่เข้าใจว่าสิ่งนี้ไม่เป็นที่น่าพึงพอใจ 1 และ 2 เนื่องจากคุณไม่จำเป็นต้องประสานงานระหว่างเครื่องที่แตกต่างกัน1000
Sasho Nikolov

ฉันไม่ใช่ผู้เชี่ยวชาญ แต่เมื่อเร็ว ๆ นี้ (ค้นหาข้อมูลเกี่ยวกับคำถาม TCS) ฉันพบฮาร์ดแวร์นี้: idquantique.com/true-random-number-generator/ ... ... บอร์ด PCI ที่สามารถสร้างกระแส 16Mbits / วินาทีของ (ควอนตัม) บิตสุ่ม ... คุณสามารถซื้อพวงของพวกเขาและใช้เซิร์ฟเวอร์ตัวสร้างตัวเลขสุ่มสองสามตัว ... ไม่ใช่วิธีการทางทฤษฎีที่ยอดเยี่ยม แต่บิตรับประกันว่าจะ "ดี" :-) :-)
Marzio De Biasi

@Vor: ฉันต้องการให้ทุกอย่างทำซ้ำและกำหนดไว้ ได้รับเมล็ดที่คงที่ฉันต้องการผลลัพธ์เหมือนกันทุกประการถ้าฉันทำการทดลองซ้ำ และฉันต้องการให้สามารถทำการทดสอบเดียวกันบนเครื่องเดียวและได้ผลลัพธ์เดียวกันอีกครั้ง (สำหรับหนึ่งมันช่วยได้มากเมื่อทำการดีบักอัลกอริธึมแบบขนาน ... )
Jukka Suomela

@ Jukka: ตกลง! ... และฉันคิดว่าการจัดเก็บบิตป่านับพันที่บีบอัดไม่ได้พร้อมกับผลการทดสอบนั้นเป็นไปไม่ได้ :-) ... จำเป็นต้องมีผู้เชี่ยวชาญ PRNG!
Marzio De Biasi

2
ขอบคุณสำหรับคำตอบจนถึงตอนนี้! มาดูกันว่าเราจะมีส่วนร่วมมากขึ้นกับการให้รางวัลหรือ
เปล่า

คำตอบ:


7

คุณสามารถใช้วิวัฒนาการของอัลกอริทึม Mersenne Twister ที่พัฒนาโดย Saito และ Matsumoto:

Fast Mersenne Twister (SFMT) ที่มุ่งเน้น SIMD

SFMT เป็นเครื่องกำเนิดไฟฟ้า Linear Feedbacked Shift Register (LFSR) ที่สร้างจำนวนเต็มหลอกเทียม 128 บิตในขั้นตอนเดียว SFMT ได้รับการออกแบบพร้อมซีพียูที่ทันสมัยล่าสุดเช่นขั้นตอนการวางท่อแบบหลายขั้นตอนและคำแนะนำ SIMD (เช่นจำนวนเต็ม 128 บิต) รองรับจำนวนเต็ม 32- บิตและ 64- บิตเช่นเดียวกับจุดลอยตัวความแม่นยำสองเท่าเป็นเอาท์พุท SFMT เร็วกว่า MT มากในแพลตฟอร์มส่วนใหญ่ ไม่เพียง แต่ความเร็วเท่านั้น แต่ยังเพิ่มขนาดของการแบ่งเท่ากันที่ความแม่นยำ v-bit ด้วย นอกจากนี้การกู้คืนจากสถานะเริ่มต้น 0 ส่วนเกินจะเร็วกว่ามาก ดูวิทยานิพนธ์ปริญญาโทของ Mutsuo Saito เพื่อดูรายละเอียด

ระยะเวลาที่แตกต่างกันจากที่จะ2 216091 - 12607122160911

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

ในซอร์สโค้ด SFMT คุณสามารถค้นหาตัวอย่างของชุดพารามิเตอร์ (ของช่วงเวลาตัวแปร) และสคริปต์ awk เพื่อแปลงไฟล์ CSV เป็นชุดพารามิเตอร์ที่คอมไพล์ได้ นอกจากนี้ยังมีเครื่องมือที่เรียกว่า " Dynamic Creation of Mersenne Twister generators "

เมื่อเร็ว ๆ นี้ผู้เขียนได้พัฒนา Mersenne Twister รุ่นที่แก้ไขเพิ่มเติม - Mersenne Twister สำหรับโปรเซสเซอร์กราฟิก - ออกแบบมาเพื่อทำงานใน GPU และใช้ประโยชน์จากเธรดการประมวลผลแบบขนานดั้งเดิม คุณสมบัติหลักคือความเร็ว: จำนวนเต็มแบบสุ่มทุกๆ 4.6ms บน GeForce GTX 2605×107

ช่วงเวลาของลำดับที่สร้างคือ , 2 23209 - 1และ2 44497 - 1สำหรับรุ่น 32 บิตและ2 23209 - 1 , 2 44497 - 1 , 2 110503 - 1สำหรับรุ่น 64 บิต มันรองรับชุดพารามิเตอร์ 128 ตัวสำหรับแต่ละช่วงเวลาในคำอื่น ๆ ก็สามารถสร้างลำดับหมายเลขหลอกเทียม 128 ชุดสำหรับแต่ละช่วงเวลาได้ เราได้พัฒนา Dynamic Creator สำหรับ MTGP ซึ่งสร้างชุดพารามิเตอร์เพิ่มเติม2112131223209124449712232091244497121105031

แน่นอนพวกเขามีเครื่องมือ MTGPDC ในการสร้างชุดพารามิเตอร์ได้สูงสุดชุด (เช่นสตรีมอิสระ)232

อัลกอริทึมผ่านการทดสอบแบบสุ่มหลักเช่นมิจฉาทิฐิและ NIST

กระดาษเบื้องต้นยังมีอยู่บน arXiv: ตัวแปรของ Mersenne Twister เหมาะสำหรับโปรเซสเซอร์กราฟิก


เครื่องมือที่เกี่ยวข้อง แต่เก่า Matsumoto และนิชิมูระ (1998): การสร้างแบบไดนามิกของ pseudorandom จำนวนเครื่องปั่นไฟ แต่ฉันไม่สามารถเข้าใจได้ว่าเครื่องมือเหล่านี้เป็นเพียงการพิสูจน์แนวคิดและเป็นแพคเกจซอฟต์แวร์ที่ใช้กันอย่างแพร่หลายในอุตสาหกรรม
Jukka Suomela

@Jukka: บางทีคุณสามารถขอได้โดยตรงกับผู้เขียนอัลกอริทึม MTGP จากเว็บไซต์ของพวกเขา: "... ยินดีรับข้อเสนอแนะ (ส่งอีเมลไปที่ Mutsuo Saito, saito" ที่ป้าย "math.sci.hiroshima-u.ac.jp และ m-mat" ที่เครื่องหมาย "math.sci.hiroshima-" u.ac.jp) ... " บางทีพวกเขาอาจจะไม่เป็นกลาง 100% แต่แน่นอนพวกเขารู้ดีถึงจุดแข็งและจุดอ่อนของ MTGP และสามารถบอกคุณได้ว่ามันเหมาะสมกับผู้ซื้อหรือไม่
Marzio De Biasi

ดูเหมือนว่า Mersenne Twister + Dynamic Creation เป็นวิธีที่แนะนำให้ใช้ใน Mathematica
Jukka Suomela

@Jukka: แพ็คเกจ MT + DC สามารถพบได้บนเว็บไซต์ของ Matsumoto ด้วย ( math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html ); และฉันคิดว่า MTGP เป็นตัวแปรที่เหมาะสมสำหรับ GPU เท่านั้น ดังนั้น MT + DC จึงเป็นตัวเลือกที่ดีกว่า (และทดสอบ / เสถียร) (ยกเว้นว่าคุณต้องการจำนวนเต็มทุก 4.6ms ในแต่ละสตรีม :-))))5×107
Marzio De Biasi

@Vor: หากคุณแก้ไขคำตอบของคุณและแทนที่ MTGP ด้วยdcmtฉันสามารถยอมรับได้
Jukka Suomela

12

ดูเหมือนจะมีหลายวิธีในการแก้ไขปัญหานี้ แต่วิธีง่าย ๆ อย่างหนึ่งคือใช้Blum Blum Shub PRNG PRNG นี้ถูกกำหนดโดยความสัมพันธ์การเกิดซ้ำโดยที่Nคือ semiprime เพื่อให้ได้บิตแบบสุ่มคุณสามารถหาบิตพาริตี้ของx iได้ สิ่งที่ดีเกี่ยวกับเรื่องนี้คือตั้งแต่x ฉัน+ k = x 2 kฉัน  mod  N = x 2 k  mod  λ ( N )ฉันxผม+1=xผม2 พอควร ยังไม่มีข้อความยังไม่มีข้อความxผมคุณสามารถคำนวณขั้นตอนใด ๆ ในค่าคงที่เวลาโดยตรงใน k (เช่น O ( บันทึก( N ) 3 )หรือเร็วกว่าขึ้นอยู่กับอัลกอริทึมการคูณที่คุณใช้สำหรับการยกกำลังแบบแยกส่วน) ดังนั้นคุณมีเครื่อง Mแล้วสำหรับเครื่องที่ทำดัชนีโดย yคุณสามารถใช้เครื่องกำเนิดไฟฟ้า x i + 1 , y = x 2 M mod  λ ( N )ฉัน  mod  Nโดยที่ x 0 , y = xxผม+k=xผม2k พอควร ยังไม่มีข้อความ=xผม2k พอควร λ(ยังไม่มีข้อความ)พอควร ยังไม่มีข้อความkO(เข้าสู่ระบบ(ยังไม่มีข้อความ)3)MYxi+1,Y=xผม2Mพอควร λ(ยังไม่มีข้อความ) พอควร ยังไม่มีข้อความโดยที่x0เป็นเมล็ดของคุณ สิ่งอำนวยความสะดวกนี้จะสร้างสตรีมตัวเลขที่แน่นอนเหมือนกับว่าคุณใช้สตรีมเดียวและกระจายมันจะส่งออกไปยังเครื่องแต่ละเครื่องตามลำดับx0,Y=x02Y พอควร λ(ยังไม่มีข้อความ) พอควร ยังไม่มีข้อความx0

อย่างไรก็ตามนี่ไม่ใช่วิธีที่เร็วที่สุดของ PRNG ดังนั้นมันจะมีประโยชน์ก็ต่อเมื่อค่าใช้จ่ายของสิ่งที่คุณกำลังทำในการจำลองนั้นสูงกว่าค่าใช้จ่ายของ PRNG อย่างมาก อย่างไรก็ตามมันมีค่าที่ชี้ให้เห็นว่ามันจะเร็วกว่ามากสำหรับการรวมกันของและNบางอย่างโดยเฉพาะอย่างยิ่งถ้าการแสดงไบนารีของ2 M  mod  λ ( N )มี 1s ไม่กี่หรือมีขนาดเล็กMยังไม่มีข้อความ2M พอควร λ(ยังไม่มีข้อความ)


1
ฉันคิดว่ามันจะเร็วกว่าที่จะให้แต่ละเครื่องสร้างส่วนที่ต่อเนื่องกันของลำดับโดยเว้นระยะห่างจนไม่ตัดกัน อย่างไรก็ตามการใช้ Blum Blum Shub สำหรับแอพพลิเคชั่นที่ไม่ใช่การเข้ารหัสดูเหมือนว่าจะมีค่าใช้จ่ายมากเกินไป
Antonio Valerio Miceli-Barone

1
@ อันโตนิโอ: ใช่ว่าจะเร็วขึ้นเล็กน้อยโดยเฉพาะอย่างยิ่งถ้าคุณรู้ล่วงหน้าว่าคุณต้องการการทดสอบกี่ครั้ง หากคุณไม่ทราบฉันคิดว่าคุณจะได้รับมาตราส่วนเดียวกันทั้งสองวิธี Wierdly Blum Blum Shub นั้นเป็น PRNG ที่เราเคยเรียนมาในสาขาฟิสิกส์การคำนวณเมื่อหลายปีก่อน หากคุณไม่ได้ใช้เพื่อจุดประสงค์ในการเข้ารหัสคุณสามารถใช้มอดุลัสขนาดเล็กกว่าได้ดังนั้นจึงไม่ช้าและสำหรับหลาย ๆ งานมันจะเร็วเมื่อเทียบกับฟังก์ชั่นของตัวแปรสุ่มที่คุณต้องคำนวณ
Joe Fitzsimons

5

ขั้นตอนก่อนการประมวลผลเป็นอย่างไร ได้รับเมล็ดสุ่ม (ขนาดn ) เรียกXที่จะได้รับกระแส pseudorandom ขนาด1000 n แสดงว่ากระแสนี้โดยs 1 , s 2 , ... , s 1000ที่สำหรับ1 ฉัน1000 , s ผมเป็นส่วนที่ต่อเนื่องกันของสตรีมของขนาดnsnX1000ns1,s2,...,s10001ผม1000sผมn

ขั้นตอนการประมวลผลล่วงหน้านี้สามารถทำได้ด้วยค่าใช้จ่ายที่ต่ำมากเนื่องจากความจริงที่ว่าเป็น PRNG ที่มีประสิทธิภาพ (วันนี้เรามี PRNG ที่รวดเร็วมาก)X

ตอนนี้ให้เป็นเมล็ดแก่เครื่องi th ซึ่งใช้Xเพื่อสร้างกระแสหลอกเทียมของตัวเองsผมผมX

ที่กำหนดคุณสมบัติที่ดีของเว้นแต่sเป็นที่รู้จักกันสำหรับการใด ๆ1 ฉัน< J 1,000เมล็ดs ฉันและs เจมีความเป็นอิสระคอมพิวเตอร์ ยิ่งไปกว่านั้นคุณเพียงแค่ต้องสร้างและบันทึกเพียงหนึ่งเมล็ดเล็ก ๆ (เช่นs ); ดังนั้นวิธีการนี้ไม่จำเป็นต้องมีการสุ่มหรือการจัดเก็บข้อมูลอย่างแท้จริงXs1ผม<J1000sผมsJs


นี่ไม่ใช่วิธีการเดียวกับที่ @Antonio แนะนำ: ใช้ PRNG เพื่อสร้างเมล็ดสำหรับตัวมันเอง ฉันมีความรู้สึกไม่สบายใจเล็กน้อยเกี่ยวกับเรื่องนี้ ... เพื่อให้เป็นตัวอย่างเล็กน้อยของสิ่งที่อาจจะผิดพลาดให้พิจารณา PRNG ที่ output = state ภายในและเมล็ดเพียงตั้งค่าสถานะภายใน
Jukka Suomela

@ Jukka: แนวทางของฉันคล้ายกับอันโตนิโอ แต่ฉันเป็นคนทั่วไปมากกว่า PRNG ในตัวอย่างของคุณ (โดยที่ output = state ภายใน) ดูเหมือนจะไม่ปลอดภัยในการเข้ารหัส PRNG มีความปลอดภัยแบบเข้ารหัสหากเอาต์พุตไม่สามารถแยกได้จากการแจกแจงแบบสม่ำเสมอ ดูสิ่งนี้สำหรับข้อมูลเพิ่มเติม PS: The Blum-Blum-Shub PRNG เป็นไปตามเงื่อนไขนี้
MS Dousti

2

คุณสามารถใช้ฟังก์ชัน pseudorandom เช่นAESหรือChaChaด้วยปุ่มสุ่มเดียวเข้ารหัสตัวนับ กำหนดแต่ละกระบวนการM = 1000แบบขนานให้ค่าเริ่มต้นที่ไม่ซ้ำกันใน{ 0 , 1 , , M - 1 } , จากนั้นคำนวณการสุ่มบล็อกที่jของบิตสำหรับโพรเซสiเป็นf ( i + j M )เช่นการเพิ่มขึ้น ตัวนับในแต่ละกระบวนการโดยMสำหรับทุก ๆ บล็อกที่ตามมาของบิตสุ่มM=1000{0,1,...,M-1}Jผม(ผม+JM)M

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

ทั้งคุณสมบัติที่ต้องการ 1 และ 2 มีความพึงพอใจโดยตรงจากสิ่งนี้ นอกจากนี้ยังสะดวกกว่าที่พฤติกรรมของระบบทั้งหมดของงานแบบขนานจะถูกควบคุมโดย "เมล็ด" เดียว (ปุ่มสำหรับ )


หากฉันไม่สนใจความแข็งแกร่งของการเข้ารหัส ChaCha (ตัวนับ) เปรียบเทียบกับวิธีเช่น Mersenne Twister ได้อย่างไร มันเร็วขึ้นหรือช้าลง? อย่างน้อยก็มีคุณสมบัติทางสถิติที่ดีหรือไม่? ฉันพยายาม google แต่ไม่พบบทความใด ๆ ที่เปรียบเทียบทั้งสองนี้ในบริบทที่ไม่ได้เข้ารหัส
Jukka Suomela

2

ขณะนี้มีฟังก์ชั่นการกระโดดสำหรับSFMT (การใช้งาน Mersenne Twister ที่รวดเร็ว)

สิ่งนี้ทำให้ฉันสามารถเริ่มต้น 1,000 MTs เพื่อให้ไม่มีการทับซ้อนกันของรอบ และ SFMT ควรเร็วกว่า MTGP เกือบจะสมบูรณ์แบบสำหรับจุดประสงค์ของฉัน


1

คุณสามารถใช้ Mersenne Twister 1,000 อินสแตนซ์ที่เริ่มต้นด้วยเมล็ดที่แตกต่างกัน

คุณสามารถลองตัวอย่างเมล็ดพันธุ์จาก Mersenne Twister อื่นหรือเพื่อสร้างความเป็นอิสระของพวกเขาจากตัวสร้างหมายเลขเข้ารหัสลับระบบปฏิบัติการ OS (/ dev / urandom ใน Linux)

Mersenne Twister ทำงานตามลำดับวงรอบเสมอเสมอเมล็ดควบคุมที่คุณเริ่มสร้างมัน ด้วยเมล็ดที่สุ่มตัวอย่างแยกกันแต่ละเครื่องกำเนิดไฟฟ้าจะเริ่มที่แตกต่างกันซึ่งโดยทั่วไปแล้วจะเป็นจุดที่ไกลมากโดยมีความน่าจะเป็นในการตัดกันน้อยมาก


ดังนั้นมอนแทนาจึงมีคุณสมบัติพิเศษที่ดีที่รับประกันได้ว่าการเพาะ MT กับมอนแทนาอื่นนั้นสมเหตุสมผลไหม?
Jukka Suomela

MT มีคุณสมบัติ pseudorandomness ใด ๆ ที่พิสูจน์ได้?
Sasho Nikolov

@ Jukka: ไม่มีใครรู้ นั่นเป็นเหตุผลที่ฉันแนะนำให้ใช้ PRNG ประเภทอื่นสำหรับการเพาะหากคุณกลัวความสัมพันธ์ที่ไม่รู้จักแปลก ๆ
Antonio Valerio Miceli-Barone

@Sasho: หน้า Wikipedia กล่าวถึงการกระจาย k และช่วงเวลาที่มีขนาดใหญ่
Antonio Valerio Miceli-Barone

1
มาตรการทางอ้อมเหล่านี้ทำให้ฉันงงงวย เป็นกรณีที่ทุกสิ่งที่คุณต้องการจาก PRNG เป็นช่วงเวลาที่มีขนาดใหญ่และk-distribution? ฉันสงสัย; สิ่งเหล่านี้เป็นเพียงแค่การตรวจสุขภาพสติเท่านั้น ตรงกันข้ามกับkอิสระแบบสองมิติซึ่งอันที่จริงแล้วเป็นทรัพย์สินเทียมหลอกที่รับประกันความถูกต้องในหลาย ๆ สถาน แม้ว่าคุณจะรวมสอง PRNG เข้าด้วยกันคุณอย่างน้อยก็ควรแสดงให้เห็นว่าอย่างน้อยคุณสมบัติ "แบบสุ่ม" ที่แก้ปัญหาได้
Sasho Nikolov
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.