पहले एल्गोरिथ्म का उत्पादन भी समान रूप से स्थान दिया
कम विसंगति श्रृंखला भी देखें ।
[ ० ; 1 ]
(के रूप में कहे अनुसार, इस स्तरीकरण के लिए एक वांछित संपत्ति जैसे हो सकता है। हाल्टन और सोबेल की तरह कम विसंगति श्रृंखला है उनके उपयोग के मामलों की है।)
एक उचित लेकिन महंगा दृष्टिकोण (वास्तविक मूल्यों के लिए)
... बीटा-वितरित यादृच्छिक संख्याओं का उपयोग करना है। समान वितरण का रैंक क्रम सांख्यिकीय बीटा वितरित है। आप इसका उपयोग बेतरतीब ढंग से सबसे छोटा , फिर दूसरा सबसे छोटा, ... दोहराने के लिए कर सकते हैं।
[ ० ; 1 ]बीटा [ 1 , एन ]1 - एक्स ~ बीटा [ n , 1 ] - ln ( 1 - एक्स ) ~ घातीय [ एन ] - ln ( यू [ 0 ; 1 ] )n1−X∼Beta[n,1]−ln(1−X)∼Exponential[n]−ln(U[0;1])n
−ln(1−x)1−xx=−ln(1−u)n=u1n=1−u1n
निम्नलिखित एल्गोरिथ्म में कौन सी पैदावार होती है:
x = a
for i in range(n, 0, -1):
x += (b-x) * (1 - pow(rand(), 1. / i))
result.append(x)
इसमें संख्यात्मक अस्थिरता शामिल हो सकती है, और कंप्यूटिंग pow
और हर वस्तु के लिए एक विभाजन छँटाई की तुलना में धीमा हो सकता है।
पूर्णांक मानों के लिए आपको एक अलग वितरण का उपयोग करने की आवश्यकता हो सकती है।
छंटाई अविश्वसनीय रूप से सस्ती है, इसलिए बस इसका उपयोग करें
लेकिन परेशान मत करो। सॉर्टिंग बहुत हास्यास्पद है, इसलिए बस सॉर्ट करें। इन वर्षों में, हम अच्छी तरह से समझ गए हैं कि छँटाई एल्गोरिदम को कैसे लागू किया जाए जो छँटाई युगल से बचने के लायक नहीं है। सैद्धांतिक रूप से यह लेकिन निरंतर शब्द एक अच्छे कार्यान्वयन में इतनी हास्यास्पद रूप से छोटा है कि यह सही उदाहरण है कि बेकार सैद्धांतिक जटिलता परिणाम कैसे हो सकते हैं। एक बेंचमार्क चलाएं। 1 मिलियन रैंडम उत्पन्न करें और सॉर्ट किए बिना। इसे कुछ बार चलाएं, और मुझे आश्चर्य नहीं होगा यदि बहुत बार छंटाई गैर-छंटाई की जाती है, क्योंकि छंटनी की लागत अभी भी आपकी माप त्रुटि से बहुत कम होगी।O(nlogn)
R
। एक समान अंतराल पर यादृच्छिक संख्याओं के सेट की एक सरणी उत्पन्न करने के लिए , निम्नलिखित कोड काम करता है :। एन [ ए , बी ]rand_array <- replicate(k, sort(runif(n, a, b))