3-डी यूनिट बॉल में समान रूप से वितरित अंक कैसे उत्पन्न करें?


11

मैंने एक पिछला प्रश्न पोस्ट किया है , यह संबंधित है लेकिन मुझे लगता है कि एक और सूत्र शुरू करना बेहतर है। इस बार, मैं सोच रहा हूं कि 3-डी यूनिट क्षेत्र के अंदर समान रूप से वितरित अंक कैसे उत्पन्न करें और नेत्रहीन और सांख्यिकीय रूप से भी वितरण की जांच कैसे करें? मैं वहां तैनात रणनीतियों को इस स्थिति में सीधे हस्तांतरणीय नहीं देखता।


4
पिछले प्रश्न में तकनीकें सीधे लागू होती हैं जब आप निरीक्षण करते हैं कि मूल की दूरी के भीतर अंकों की संख्या लिए आनुपातिक होनी चाहिए । इस प्रकार यदि आप एक स्वतंत्र वर्दी variate उत्पन्न में एक बिंदु के साथ क्षेत्र की सतह पर, स्केलिंग द्वारा काम कर देता है। rr3u[0,1]wwu1/3
— whuber

@whuber: शायद मुझे पिछली तकनीकों का सार नहीं मिला। आपने जो वर्णन किया है, उसे करने की कोशिश करता हूं। इसके अतिरिक्त, यहाँ एकरूपता की जाँच करने के तरीके क्या हैं?
— हुआंग ली

2
@ क्वियांग रिप्ले के के फंक्शन और ची-स्क्वेर्ड टेस्ट। आप गोलाकार सतह पर बिंदुओं के रेडियल प्रक्षेपण की एकरूपता, अंकों की लंबाई के घन की एकरूपता और उन दो की स्वतंत्रता की जांच भी कर सकते हैं।
— whuber

मेरे लिए, यह स्पष्ट नहीं है कि "समान रूप से वितरित" का अर्थ क्या है ... और शायद इसे परिभाषित करने की कोशिश

@mbq, मुझे लगता है कि इस शब्द को परिभाषित करने के लिए, हमारे पास एक pdf होना चाहिए । fR,Θ,Φ(r,θ,ϕ)=r2
— ली

जवाबों:


14

सबसे आसान तरीका समान हाइपरक्यूब में बिंदुओं को समान रूप से नमूना करना है और उन क्षेत्रों को त्यागना है जो क्षेत्र के भीतर झूठ नहीं बोलते हैं। 3 डी में, ऐसा अक्सर नहीं होना चाहिए, लगभग 50% समय। (हाइपरक्यूब का आयतन 1 है, गोले का आयतन ।)43πr3=0.523...


+1। यह comp.graphics.algorithms FAQ द्वारा सुझाए गए तकनीकों में से एक है "गोले पर समान यादृच्छिक बिंदु"।
— डेविड कैरी

1
क्या होगा अगर हम लिए ऐसा करना चाहते हैं ? n>100
— ares

2
इसे "अस्वीकृति विधि" कहा जाता है। तीन आयामों में अच्छी तरह से काम करते हुए, सत्ताईस आयामों द्वारा, ट्रिलियन अंकों में से केवल 27-गेंद में निहित है और बाकी 27-क्यूब में नहीं है, इसलिए अस्वीकृति विधि अच्छी तरह से सामान्य नहीं होती है। मैं इसका उल्लेख करता हूं क्योंकि मुझे वर्तमान में 2,440 आयामों की एक गेंद में समान रूप से नमूनों की आवश्यकता है।
— Reb.Cabin

13

आप इसे गोलाकार निर्देशांक में भी कर सकते हैं, जिस स्थिति में कोई अस्वीकृति नहीं है। पहले आप त्रिज्या और दो कोणों को यादृच्छिक रूप से उत्पन्न करते हैं, फिर आप , और ( , ,) को पुनर्प्राप्त करने के लिए संक्रमण सूत्र का उपयोग करते हैं , )।वाई जेड एक्स = आर पाप θ क्योंकि φ y = आर पाप θ पाप φ जेड = आर क्योंकि θxyzx=rsin⁡θcos⁡ϕy=rsin⁡θsin⁡ϕz=rcos⁡θ

आप और बीच unifomly उत्पन्न करते हैं । त्रिज्या और झुकाव हालांकि एक समान नहीं हैं। संभावना है कि एक बिंदु त्रिज्या के गेंद के अंदर है है इसलिए की प्रायिकता घनत्व समारोह है । आप आसानी से जांच सकते हैं कि एक समान चर के क्यूबिक रूट का समान वितरण है, इसलिए यह है कि आप कैसे उत्पन्न कर सकते हैं । संभावना है कि एक गोलाकार शंकु के भीतर एक बिंदु झूठ झुकाव द्वारा परिभाषित है या अगरϕ02πrθrr3r3r2rθ(1−cos⁡θ)/21−(1−cos⁡(−θ))/2θ>π/2 । घनत्व तो है । आप जांच सकते हैं कि एक समान चर के आर्कोसिन का घनत्व उचित घनत्व है।θsin(θ)/2

या अधिक सरलता से, हम समान रूप से बेटन और के _ के कोसाइन का अनुकरण कर सकते हैं ।θ−11

R में यह नीचे दिखाया गया है।

n <- 10000 # For example n = 10,000.
phi <- runif(n, max=2*pi)
r <- runif(n)^(1/3)
cos_theta <- runif(n, min=-1, max=1)
x <- r * sqrt(1-cos_theta^2) * cos(phi)
y <- r * sqrt(1-cos_theta^2) * sin(phi)
z <- r * cos_theta

इस उत्तर को लिखने और संपादित करने के दौरान, मैंने महसूस किया कि समाधान मेरे विचार से कम तुच्छ है।

मुझे लगता है कि सबसे आसान और कम्प्यूटेशनल रूप से सबसे कुशल तरीका इस पोस्ट पर दिखाए गए यूनिट के क्षेत्र में @ उत्पन्न करने के लिए व्हिबर की विधि का पालन करना है और उन्हें साथ स्केल करना है ।(x,y,z)r

xyz <- matrix(rnorm(3*n), ncol=3)
lambda <- runif(n)^(1/3) / sqrt(rowSums(xyz^2))
xyz <- xyz*lambda

3
अस्वीकृति की कमी के कारण यह एक बेहतर जवाब है। उच्च आयामी स्थानों में, स्वीकृति की कम संभावना के कारण अस्वीकृति नमूनाकरण बहुत महंगा हो सकता है।
— किंग्डियन

2
अंतिम बिट कोड उच्च आयाम के लिए अनुकूलित किया जा सकता है, कहते हैं d। इस के लिए, के सभी उदाहरणों की जगह 3से d।
— gui11aume

0

मेरी राय में, सबसे आसान विकल्प जो उच्च आयामी गेंदों का सामान्यीकरण भी करता है (जो गोलाकार निर्देशांक की स्थिति नहीं है और यहां तक ​​कि अस्वीकृति के नमूने के मामले में भी कम है) यादृच्छिक अंक उत्पन्न करने के लिए है जो दो यादृच्छिक चर के उत्पाद हैं जहाँ एक गाऊसी यादृच्छिक चर है (अर्थात समरूप, अर्थात किसी भी दिशा में समान रूप से इंगित करते हुए) सामान्यीकृत किया जाता है ताकि वह गोला और पर स्थित हो जो एक समान यादृच्छिक चर है में पावर , त्रिज्या का ख्याल रखते हुए, डेटा की गतिशीलता।पी = एन / | | एन | | ∗ यू 1 / एन एन यू [ 0 , 1 ] 1 / एन एनPP=N/||N||∗U1/nNU[0,1]1/nn

Et voilà!


2
एक समान रूप से वितरित त्रिज्या गेंद में एक समान बिंदु नहीं देगी ...
— kjetil b halvorsen

1
सच। आपको निम्न / उच्च घनत्व वाले क्षेत्रों के लिए चर के वितरण को थोड़ा सा अनुकूलित करने की आवश्यकता होगी । U
— जीन-ल्यूक बाउचॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.