คำถามติดแท็ก randomness

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

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
asymptotically shuffling ไร้เดียงสาแค่ไหน?
เป็นที่ทราบกันดีว่าอัลกอริทึม 'ไร้เดียงสา' สำหรับการสับเปลี่ยนอาเรย์โดยการสลับแต่ละไอเท็มกับอีกอันที่สุ่มเลือกไม่ทำงานอย่างถูกต้อง: for (i=0..n-1) swap(A[i], A[random(n)]); โดยเฉพาะตั้งแต่ที่แต่ละnnnซ้ำหนึ่งของnnnเลือกที่จะทำ (กับความน่าจะเป็นชุด) มีn nnnn^nที่เป็นไปได้ 'เส้นทาง' ผ่านการคำนวณ; เพราะจำนวนการเรียงสับเปลี่ยนที่เป็นไปได้n ! n!n!ไม่แบ่งเท่า ๆ กันตามจำนวนของเส้นทางn nnnn^nมันเป็นไปไม่ได้ที่อัลกอริธึมนี้จะสร้างnแต่ละอัน! n!n!การเรียงสับเปลี่ยนที่มีความน่าจะเป็นเท่ากัน (แต่อย่างใดอย่างหนึ่งควรใช้การสลับแบบFischer-Yatesซึ่งจะเปลี่ยนการโทรเพื่อเลือกหมายเลขสุ่มจาก [0..n) ด้วยการโทรเพื่อเลือกหมายเลขแบบสุ่มจาก [i..n); เป็นสิ่งที่สงสัยกับคำถามของฉัน) สิ่งที่ฉันสงสัยคือการสับเปลี่ยนไร้เดียงสาจะเป็นไปได้อย่างไร โดยเฉพาะอย่างยิ่งการให้P ( n )P(n)P(n)เป็นชุดของพีชคณิตทั้งหมดและC ( ρ )C(ρ)C(\rho)เป็นจำนวนเส้นทางผ่านขั้นตอนวิธีการที่ไร้เดียงสาที่ผลิตที่เกิดการเปลี่ยนแปลงρ ∈ P ( n )ρ∈P(n)\rho\in P(n)สิ่งที่เป็นพฤติกรรมเชิงของการทำงาน M(n)=n!nnmaxρ∈P(n)C(ρ)M(n)=n!nnmaxρ∈P(n)C(ρ)\qquad \displaystyle M(n) = \frac{n!}{n^n}\max_{\rho\in P(n)} C(\rho) และ m(n)=n!nnminρ∈P(n)C(ρ)m(n)=n!nnminρ∈P(n)C(ρ)\qquad \displaystyle m(n) …

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) …

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

4
การสุ่มตัวอย่างแบบสม่ำเสมอจากเริม
ฉันกำลังมองหาอัลกอริทึมในการสร้างอาร์เรย์ของตัวเลขสุ่ม N ซึ่งผลรวมของตัวเลข N คือ 1 และตัวเลขทั้งหมดอยู่ภายใน 0 และ 1 ตัวอย่างเช่น N = 3 จุดสุ่ม (x, y, z) ควรอยู่ภายในสามเหลี่ยม: x + y + z = 1 0 < x < 1 0 < y < 1 0 < z < 1 โดยหลักการแล้วฉันต้องการให้แต่ละจุดภายในพื้นที่มีความน่าจะเป็นเท่ากัน ถ้ามันยากเกินไปฉันสามารถวางข้อกำหนดได้ ขอบคุณ

11
การอ้างความผิดบาปของ von Neumann ไม่สามารถใช้ได้อีกต่อไป?
บางคนพูดว่าต่อไปนี้: ใครก็ตามที่พยายามสร้างตัวเลขสุ่มด้วยวิธีการที่กำหนดขึ้นมาแน่นอนว่าอยู่ในสภาพบาป นั่นหมายความว่าคุณไม่สามารถสร้างตัวเลขสุ่มจริงด้วยคอมพิวเตอร์ได้ และเขาบอกว่าเมื่อคอมพิวเตอร์มีขนาดเท่ากับไมโครโปรเซสเซอร์ Intel 8080 (ประมาณ 6,000 วาล์ว) คอมพิวเตอร์มีความซับซ้อนมากขึ้นและฉันเชื่อว่าคำสั่งของ von Von Neumann อาจไม่เป็นจริงอีกต่อไป พิจารณาว่าอัลกอริทึมที่ใช้งานซอฟต์แวร์เท่านั้นเป็นไปไม่ได้ พวกเขาทำงานบนฮาร์ดแวร์ทางกายภาพ เครื่องกำเนิดเลขสุ่มที่แท้จริงและแหล่งข้อมูลเอนโทรปีของพวกเขายังทำจากฮาร์ดแวร์ ส่วนของ Java นี้ใส่ลงในลูป: file.writeByte((byte) (System.nanoTime() & 0xff)); สามารถสร้างไฟล์ข้อมูลที่ฉันแสดงเป็นภาพ: คุณสามารถเห็นโครงสร้าง แต่มีการสุ่มมากมายเช่นกัน สิ่งที่น่าสนใจคือไฟล์ PNG นี้มีขนาด 232KB แต่มีพิกเซลสีเทาขนาด 250,000 พิกเซล ระดับการบีบอัด PNG สูงสุด นั่นเป็นเพียงอัตราส่วนการอัด 7% คือ ไม่สามารถบีบอัดได้ สิ่งที่น่าสนใจก็คือไฟล์นั้นมีเอกลักษณ์ ทุกรุ่นของไฟล์นี้มีรูปแบบที่แตกต่างกันเล็กน้อยและมีความสามารถในการบีบอัดประมาณ 7% ฉันเน้นสิ่งนี้ตามที่สำคัญต่อการโต้แย้งของฉัน นั่นคือเอนโทรปี ~ 7bits / byte …

9
สร้างตัวเลขสุ่มกระจายอย่างสม่ำเสมอโดยใช้เหรียญ
คุณมีหนึ่งเหรียญ คุณสามารถพลิกมันได้หลายครั้งตามที่คุณต้องการ คุณต้องการที่จะสร้างตัวเลขสุ่มดังกล่าวว่า≤ R &lt; Bที่R , , ข∈ Z +Rrra ≤ r &lt; ba≤r&lt;ba \leq r < br,a,b∈Z+r,a,b∈Z+r,a,b\in \mathbb{Z}^+ การแจกแจงของตัวเลขควรเหมือนกัน มันง่ายถ้า :b−a=2nb−a=2nb -a = 2^n r = a + binary2dec(flip n times write 0 for heads and 1 for tails) เกิดอะไรขึ้นถ้า ?b−a≠2nb−a≠2nb-a \neq 2^n

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

1
วิธีการพิสูจน์ความถูกต้องของอัลกอริทึมแบบสุ่ม?
ฉันมีสองวิธีในการสร้างรายการสิ่งของตามลำดับแบบสุ่มและต้องการตรวจสอบว่ามีความยุติธรรมเท่ากันหรือไม่ วิธีแรกที่ฉันใช้คือการสร้างรายการทั้งหมดขององค์ประกอบแล้วทำการสับเปลี่ยนมัน (พูดสับเปลี่ยน Fisher-Yates) วิธีที่สองเป็นวิธีการวนซ้ำซึ่งเก็บรายการที่สับในทุกการแทรก ในโค้ดหลอกฟังก์ชันการแทรกคือ: insert( list, item ) list.append( item ) swap( list.random_item, list.last_item ) ฉันสนใจที่จะแสดงความเป็นธรรมของการสับคันนี้โดยเฉพาะ ข้อดีของอัลกอริทึมนี้ซึ่งใช้อยู่ก็เพียงพอแล้วแม้ว่ามันจะไม่ยุติธรรมก็ตาม ในการตัดสินใจว่าฉันต้องการวิธีประเมินความเป็นธรรมของมัน แนวคิดแรกของฉันคือฉันต้องคำนวณพีชคณิตทั้งหมดที่เป็นไปได้ด้วยวิธีนี้เทียบกับการเรียงสับเปลี่ยนทั้งหมดที่เป็นไปได้สำหรับชุดของความยาวสุดท้าย ฉันสูญเสียนิดหน่อย แต่วิธีคำนวณพีชคณิตที่เกิดจากอัลกอริทึมนี้ ฉันยังไม่แน่ใจว่านี่เป็นวิธีที่ดีที่สุดหรือง่ายที่สุด

8
สิ่งที่เป็นแบบสุ่มจริงๆ
ฉันเป็นนักเรียนด้านวิทยาศาสตร์คอมพิวเตอร์และกำลังลงทะเบียนเรียนในหลักสูตรการจำลองระบบและการสร้างแบบจำลอง มันเกี่ยวข้องกับการจัดการกับระบบในชีวิตประจำวันรอบตัวเราและจำลองพวกเขาในสถานการณ์ที่แตกต่างกันโดยการสร้างตัวเลขสุ่มในเส้นโค้งการกระจายที่แตกต่างกันเช่น IID, Gaussian ฯลฯ เป็นต้น ฉันทำงานเกี่ยวกับโครงการ boids และมีคำถามหนึ่งที่ทำให้ฉันรู้สึกว่า "สุ่ม" ที่แท้จริงคืออะไร? ฉันหมายถึงเช่นทุกหมายเลขสุ่มที่เราสร้างแม้ในภาษาการเขียนโปรแกรมของเราเช่นผ่านMath.random()วิธีการใน Java เป็นหลักถูกสร้างขึ้นตาม "อัลกอริทึม" เราจะรู้ได้อย่างไรว่าลำดับของตัวเลขที่เราผลิตนั้นเป็นจริงโดยการสุ่มและมันจะช่วยเราในการจำลองแบบจำลองที่แม่นยำที่สุดเท่าที่จะเป็นไปได้?

6
เราสามารถสร้างตัวเลขสุ่มโดยใช้ตัวเลขไม่ลงตัวเช่น like และ e ได้หรือไม่?
หมายเลขที่ไม่มีตัวตนเช่น ,และมีลำดับที่ไม่ซ้ำกันและไม่ซ้ำกันหลังจากจุดทศนิยม หากเราแยกตัวเลข -th จากตัวเลขดังกล่าว (โดยที่คือจำนวนครั้งที่เรียกว่าวิธีการ) และสร้างตัวเลขด้วยตัวเลขตามที่เป็นอยู่เราจะไม่ได้รับตัวสร้างตัวเลขสุ่มสมบูรณ์หรือไม่ ตัวอย่างเช่นหากเราใช้ ,และตัวเลขแรกคือ 123, อันที่สองคือ 471, อันถัดไปคือ 184 เป็นต้นππ\piอีอีe2-√2\sqrt{2}nnnnnn2-√2\sqrt{2}อีอีeππ\pi

9
วิธีการจำลองการตายให้เหรียญยุติธรรม
สมมติว่าคุณได้รับเหรียญที่ยุติธรรมและคุณต้องการจำลองการแจกแจงความน่าจะเป็นของการโยนเหรียญตาย (หกด้าน) ซ้ำ ๆ ความคิดแรกของฉันคือการที่เราต้องเลือกที่เหมาะสมจำนวนเต็มเช่นว่า6m ดังนั้นหลังจากที่พลิกเหรียญครั้งที่เรา map จำนวนเข้ารหัสโดย K-ยาว bitstring เพื่อผลของการตายโดยการหารช่วงเป็น 6 ช่วงเวลาที่แต่ละความยาวเมตรอย่างไรก็ตามสิ่งนี้เป็นไปไม่ได้เนื่องจากมีสองสิ่งเป็นเพียงปัจจัยหลักเท่านั้น แต่ปัจจัยสำคัญของรวมถึงสาม ควรมีวิธีง่าย ๆ ในการทำเช่นนี้ใช่มั้ย2 k = 6 m k [ 0 , 2 k - 1 ] m 2 k 6 mk , มk,mk,m2k= 6 เมตร2k=6m2^k = 6mkkk[ 0 , 2k- 1 ][0,2k−1][0,2^k-1]ม.mm2k2k2^k6 ม6m6m

3
การปฏิเสธการสุ่มตัวอย่างเป็นวิธีเดียวที่จะได้รับการแจกแจงตัวเลขที่เหมือนกันอย่างแท้จริงหรือไม่?
สมมติว่าเรามีตัวสร้างแบบสุ่มที่ส่งออกตัวเลขในช่วง[0..R−1][0..R−1][0..R-1]ด้วยการแจกแจงแบบเดียวกันและเราจำเป็นต้องสร้างตัวเลขสุ่มในช่วง[0..N−1][0..N−1][0..N-1] ด้วยการแจกแจงแบบเดียวกัน สมมติว่าN&lt;RN&lt;RN < RและNNNไม่เท่ากันแบ่งRRR ; เพื่อให้ได้การกระจายที่เหมือนกันอย่างแท้จริงเราสามารถใช้ วิธีการสุ่มตัวอย่างการปฏิเสธ : ถ้าkkkเป็นจำนวนเต็มที่มากที่สุดเช่นนั้นkN&lt;RkN&lt;Rk N < R เลือกตัวเลขสุ่มrrrใน[0..R−1][0..R−1][0..R-1] ถ้าr&lt;kNr&lt;kNr < k Nจากนั้นเอาท์พุทมิฉะนั้นก็ลองกับตัวเลขสุ่มอื่น ๆ r ', r ", ... จนกว่าจะเจอเงื่อนไขrmodNrmodNr \mod N การปฏิเสธการสุ่มตัวอย่างเป็นวิธีเดียวที่จะได้การกระจายแบบไม่ต่อเนื่องสม่ำเสมออย่างแท้จริงหรือไม่? หากคำตอบคือใช่ทำไม หมายเหตุ: หากความคิดเหมือนกัน: สร้างตัวเลขสุ่มในตัวอย่างเช่นโดยที่เป็นตัวเลขสุ่มในช่วงR ' [ 0 .. R เมตร - 1 ] , R ม &gt; = N R ' = …

5
จะตรวจพบได้อย่างไรว่าตัวสร้างตัวเลขนั้นไม่ได้สุ่มอย่างแท้จริง?
ฉันได้ยินมาว่าการสร้างตัวเลขสุ่มในคอมพิวเตอร์นั้นไม่ได้สุ่มจริงๆ แต่ไม่มีวิธีที่มีประสิทธิภาพในการตรวจจับ จะตรวจจับได้อย่างไร?

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