คำถามติดแท็ก pseudo-random-generators

6
ทำไมเราไม่รวมตัวสร้างจำนวนสุ่ม?
มีแอปพลิเคชั่นมากมายที่ใช้ตัวสร้างตัวเลขสุ่มหลอก ดังนั้นผู้คนจึงใช้สิ่งที่พวกเขาคิดว่ายอดเยี่ยมเท่านั้นที่จะพบในภายหลังว่ามันมีข้อบกพร่อง สิ่งนี้เกิดขึ้นกับเครื่องสร้างตัวเลขสุ่มจาวาสคริปต์ RandU เร็วเกินไปเช่นกัน นอกจากนี้ยังมีปัญหาของการเริ่มต้นเริ่มต้นที่ไม่เหมาะสมสำหรับบางอย่างเช่น Twister ฉันไม่สามารถหาตัวอย่างของใครก็ตามที่รวมเครื่องกำเนิดไฟฟ้าสองตระกูลหรือมากกว่าเข้ากับผู้ดำเนินการ xor ปกติ หากมีพลังงานคอมพิวเตอร์เพียงพอที่จะเรียกใช้สิ่งต่าง ๆ เช่นการใช้งาน java.SecureRandom หรือ Twister ทำไมคนไม่รวมพวกเขา? ISAAC xor XORShift xor RandU ควรเป็นตัวอย่างที่ดีพอสมควรและคุณสามารถเห็นจุดอ่อนของเครื่องกำเนิดไฟฟ้าเดี่ยว ๆ ที่ได้รับการผ่อนปรนจากผู้อื่น นอกจากนี้ยังควรช่วยในการกระจายตัวเลขไปสู่มิติที่สูงขึ้นเนื่องจากอัลกอริทึมภายในนั้นแตกต่างกันโดยสิ้นเชิง มีหลักการพื้นฐานบางอย่างที่พวกเขาไม่ควรนำมารวมกัน? หากคุณต้องการสร้างตัวสร้างตัวเลขสุ่มจริงผู้คนอาจแนะนำให้คุณรวมแหล่งข้อมูลเอนโทรปีสองแหล่งขึ้นไป ตัวอย่างของฉันแตกต่างกันอย่างไร ฉันไม่รวมตัวอย่างทั่วไปของตัวเลื่อนการตอบรับเชิงเส้นหลายตัวที่ทำงานร่วมกันเนื่องจากพวกเขามาจากตระกูลเดียวกัน

3
ทำไม Mersenne Twister ถึงถูกมองว่าดี?
Mersenne Twister ได้รับการยกย่องอย่างกว้างขวางว่าดี Heck แหล่ง CPythonบอกว่า "เป็นหนึ่งในเครื่องกำเนิดไฟฟ้าที่ได้รับการทดสอบอย่างกว้างขวางมากที่สุดที่มีอยู่" แต่สิ่งนี้หมายความว่าอย่างไร เมื่อถูกขอให้แสดงรายการคุณสมบัติของเครื่องกำเนิดนี้สิ่งที่ฉันสามารถเสนอได้ส่วนใหญ่จะไม่ดี: มันมีขนาดใหญ่และยืดหยุ่นไม่ได้ (เช่นไม่มีการค้นหาหรือสตรีมหลายรายการ) มันล้มเหลวในการทดสอบทางสถิติมาตรฐานแม้จะมีขนาดใหญ่ มันมีปัญหาร้ายแรงประมาณ 0 ซึ่งบอกว่ามันสุ่มตัวเองค่อนข้างแย่ มันเร็วมาก และอื่น ๆ เมื่อเทียบกับ RNG แบบง่าย ๆ เช่น XorShift * มันก็ซับซ้อนเช่นกัน ดังนั้นฉันจึงหาข้อมูลเกี่ยวกับสาเหตุที่สิ่งนี้คิดว่าดี กระดาษต้นฉบับให้ความเห็นจำนวนมากในช่วง "ซุปเปอร์ดาราศาสตร์" และการแบ่งตัว 623 มิติ ในหลายมาตรการที่รู้จักกันการทดสอบตามความสม่ำเสมอของมิติที่สูงขึ้นเช่นการทดสอบสเปกตรัม (cf, Knuth [1981]) และการทดสอบการกระจายตัว k ที่อธิบายไว้ด้านล่างนี้ถือว่ามีความแข็งแกร่งที่สุด แต่สำหรับคุณสมบัตินี้เครื่องกำเนิดไฟฟ้าจะถูกตีด้วยเคาน์เตอร์ที่มีความยาวเพียงพอ! สิ่งนี้ไม่มีความเห็นเกี่ยวกับการกระจายในท้องที่ซึ่งเป็นสิ่งที่คุณสนใจจริง ๆ ในเครื่องกำเนิดไฟฟ้า (แม้ว่า "ท้องถิ่น" อาจหมายถึงสิ่งต่าง ๆ ) และแม้แต่ CSPRNG …

7
PRNG สามารถใช้ในการบีบอัดข้อมูลได้หรือไม่?
ความคิดนี้เกิดขึ้นกับฉันในขณะที่เด็กเรียนรู้ที่จะเขียนโปรแกรมและพบกับ PRNG เป็นครั้งแรก ฉันยังไม่รู้ว่ามันสมจริงแค่ไหน แต่ตอนนี้มีการแลกเปลี่ยนกองซ้อน นี่คือโครงร่างของอายุ 14 ปีสำหรับอัลกอริทึมการบีบอัดที่น่าทึ่ง: ใช้ PRNG และ seed ด้วย seed sเพื่อให้ได้ลำดับไบต์แบบสุ่มหลอกยาว ในการส่งลำดับนั้นไปยังบุคคลอื่นคุณต้องสื่อสารเพียงคำอธิบายของ PRNG เมล็ดที่เหมาะสมและความยาวของข้อความ สำหรับลำดับที่ยาวพอคำอธิบายนั้นจะสั้นกว่ามาก ตอนนี้สมมติว่าฉันสามารถกลับกระบวนการได้ เนื่องจากมีเวลาและทรัพยากรในการคำนวณเพียงพอฉันสามารถทำการค้นหาที่ดุร้ายและค้นหาเมล็ดพันธุ์ (และ PRNG หรือกล่าวอีกนัยหนึ่งว่า: โปรแกรม) ที่สร้างลำดับที่ฉันต้องการ (สมมติว่ารูปแมวน่ารักกำลังซุกซน) PRNG ทำซ้ำหลังจากสร้างบิตจำนวนมากพอ แต่เมื่อเทียบกับรอบ "ปกติ" ข้อความของฉันค่อนข้างสั้นดังนั้น dos นี้ดูเหมือนจะไม่เป็นปัญหามากนัก Voila วิธีบีบอัดข้อมูล ดังนั้นสมมติว่า: ลำดับที่ฉันต้องการบีบอัดมี จำกัด และทราบล่วงหน้า ฉันไม่สั้นเรื่องเงินสดหรือเวลา (แค่ต้องการจำนวน จำกัด ของทั้งสองอย่าง) ฉันอยากรู้: มีข้อบกพร่องพื้นฐานในการให้เหตุผลเบื้องหลังโครงการหรือไม่ วิธีมาตรฐานในการวิเคราะห์การทดลองทางความคิดเหล่านี้คืออะไร สรุป บ่อยครั้งที่คำตอบที่ดีไม่เพียง แต่ชัดเจนคำตอบเท่านั้น …

2
จำลองความน่าจะเป็น 1 จาก 2 ^ N โดยมีบิตสุ่มน้อยกว่า N
บอกว่าฉันต้องจำลองการกระจายแบบไม่ต่อเนื่องดังนี้ P(X=k)={12N,1−12N,if k=1if k=0P(X=k)={12N,if k=11−12N,if k=0 P(X = k) = \begin{cases} \frac{1}{2^N}, & \text{if $k = 1$} \\ 1 - \frac{1}{2^N}, & \text{if $k = 0$} \end{cases} วิธีที่ชัดเจนที่สุดคือการวาดบิตสุ่มและตรวจสอบว่าทั้งหมดนั้นเท่ากับ (หรือ ) อย่างไรก็ตามทฤษฎีสารสนเทศกล่าวNNN000111 S=−∑iPilogPi=−12Nlog12N−(1−12N)log(1−12N)=12Nlog2N+(1−12N)log2N2N−1→0S=−∑iPilog⁡Pi=−12Nlog⁡12N−(1−12N)log⁡(1−12N)=12Nlog⁡2N+(1−12N)log⁡2N2N−1→0 \begin{align} S & = - \sum_{i} P_i \log{P_i} \\ & = - \frac{1}{2^N} \log{\frac{1}{2^N}} - \left(1 - \frac{1}{2^N}\right) …

3
ตัวกำเนิดตัวเลขแบบหลอกทั้งหมดเป็นระยะหรือไม่?
ตัวกำเนิดตัวเลขแบบหลอกทั้งหมดเป็นระยะหรือไม่? หรือพวกเขาเป็นระยะ ๆ ในที่สุด? ฉันหมายถึงเป็นระยะ ๆ เช่นเดียวกับตัวเลขที่มีเหตุผลพวกเขาในที่สุดสร้างลำดับเป็นระยะ ... และการสุ่มหลอกหมายถึงอัลกอริทึม / การสร้างตัวเลขทางคณิตศาสตร์ของการสุ่ม ...

1
การเลือกก๊อกน้ำสำหรับการลงทะเบียน Feedback Feedback เชิงเส้น
ฉันสับสนเกี่ยวกับวิธีเลือกก๊อกสำหรับการลงทะเบียนการตอบรับเชิงเส้น ฉันมีแผนภาพซึ่งแสดงให้เห็น LFSR กับการเชื่อมต่อพหุนามเป็น 1 ห้าขั้นตอนจะมีป้ายกำกับ: R 4 , R 3 , R 2 , R 1และR 0และก๊อกน้ำออกมาจากR 0และR 3ค( X) = X5+ X2+ 1C(X)=X5+X2+1C(X) = X^5 + X^2 + 1R 4 , R 3 , R 2 , R 1R4,R3,R2,R1R4, R3, R2, R1R 0R0R0R 0R0R0R 3R3R3 ก๊อกเหล่านี้มีวิธีการตัดสินใจอย่างไร เมื่อฉันได้รับพหุนามการเชื่อมต่อ แต่ไม่มีไดอะแกรมฉันจะรู้ได้อย่างไรว่าควรใช้ค่า …

1
การพิสูจน์ความปลอดภัยของตัวสร้างตัวเลขสุ่มหลอก Nisan-Wigderson
ให้เป็นส่วนหนึ่งออกแบบและเป็นฟังก์ชั่นบูลีน เครื่องกำเนิดไฟฟ้า Nisan-Wigdersonถูกกำหนดดังนี้: ( m , k ) f : { 0 , 1 } m → { 0 , 1 } G f : { 0 , 1 } l → { 0 , 1 } nS= { Sผม}1 ≤ ฉัน≤ nS={Si}1≤i≤n\cal{S}=\{S_i\}_{1\leq i\leq n}( m , k )(m,k)(m,k)ฉ: { …

4
PRNG สำหรับสร้างตัวเลขด้วย n บิตตั้งค่า
ฉันกำลังเขียนโค้ดบางส่วนเพื่อสร้างข้อมูลไบนารี ฉันต้องการสร้างหมายเลข 64 บิตด้วยจำนวนบิตที่กำหนดโดยเฉพาะ แม่นยำยิ่งขึ้นขั้นตอนควรใช้เวลาและส่งกลับตัวเลข 64 บิตหลอกเทียมด้วยบิตตั้งค่าเป็นและส่วนที่เหลือตั้งค่าเป็น 00&lt;n&lt;640&lt;n&lt;640 < n < 64nnn111 แนวทางปัจจุบันของฉันเกี่ยวข้องกับสิ่งนี้: สร้าง pseudorandom 64 บิตจำนวนkkkk นับบิตในจัดเก็บผลในขkkkbbb ถ้า , เอาต์พุต ; มิฉะนั้นไปที่ 1b=nb=nb = nkkk ใช้งานได้ แต่ดูเหมือนไม่เหมาะสม มีอัลกอริธึม PRNG บางประเภทที่สามารถสร้างตัวเลขด้วยบิตเซตยิ่งกว่านี้หรือไม่?nnn

4
อัลกอริทึมที่ดีสำหรับการสร้าง DFA แบบสุ่มคืออะไร
ฉันกำลังสร้าง DFA แบบสุ่มเพื่อทดสอบอัลกอริทึมการลด DFA กับพวกเขา อัลกอริทึมที่ฉันใช้ตอนนี้มีดังนี้: สำหรับแต่ละรัฐ Qqqสำหรับแต่ละสัญลักษณ์ในตัวอักษร คccเพิ่ม δ( q, c )δ(q,c)\delta (q, c)เพื่อบางรัฐสุ่ม แต่ละรัฐมีความน่าจะเป็นเหมือนกันในการเป็นรัฐสุดท้าย นี่เป็นวิธีที่ดีในการสร้าง DFA ที่เป็นกลางหรือไม่? นอกจากนี้อัลกอริทึมนี้ไม่ได้สร้างการตัดแต่ง DFA (DFA ที่ไม่มีสถานะล้าสมัย) ดังนั้นฉันสงสัยว่าถ้ามีวิธีที่ดีกว่าในการสร้างการสุ่ม DFAs ที่สามารถมั่นใจได้ว่าการตัดแต่งนั้นเป็นอย่างไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.