मान लीजिए कि हमारे पास तत्वों का एक सेट है। हमें उन्हें गैर-घटते क्रम में क्रमबद्ध करना होगा। लेकिन छँटाई तकनीक यादृच्छिक है। हम जाँचेंगे कि ऐरे को सॉर्ट किया गया है या नहीं, यदि नहीं तो रैंडम फेरबदल करें और फिर से जांचें। जब तक सभी तत्वों को क्रमबद्ध नहीं किया जाता तब तक इस प्रक्रिया को जारी रखें। इस मामले में हमें उन्हें छाँटने के लिए अपेक्षित फेरबदल की अपेक्षित संख्या ज्ञात करनी होगी। 6 दशमलव स्थानों तक उत्तर दिखाएँ।
इसलिए, यदि इनपुट nums =[5,2,7] जैसा है, तो आउटपुट 6 होगा क्योंकि वहाँ 3 क्रमपरिवर्तन संभव हैं, इसलिए संभावना 1/3 है
- अगर हमें i =1 पुनरावृत्ति पर क्रमबद्ध सरणी मिलती है, तो इसमें 1/3 लगेगा
- अगर हमें i =2 पुनरावृत्तियों पर क्रमबद्ध सरणी मिलती है, तो इसमें (2/3)*(1/3) लगेगा
अगर हमें पुनरावृत्तियों की i-th संख्या पर क्रमबद्ध सरणी मिलती है, तो इसमें (2/3)^(i-1) * (1/3)
लगेगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- यदि अंकों को क्रमबद्ध किया जाता है, तो
- वापसी 0
- अन्यथा,
- m:=एक नया शब्दकोश शुरू में खाली
- प्रत्येक i के लिए अंकों में, करें
- अगर मैं मी में मौजूद है, तो
- m[i] :=m[i] + 1
- अन्यथा,
- एम[i]:=1
- अगर मैं मी में मौजूद है, तो
- संख्या:=1
- एम में प्रत्येक कुंजी के लिए, करते हैं
- संख्या:=संख्या * फैक्टोरियल(एम[i])
- den:=फैक्टोरियल(अंकों का आकार)
- वापसी (den/num) और 6 दशमलव स्थानों तक पूर्णांकित करना
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
from math import factorial def solve(nums): if nums == sorted(nums): return 0 else: m={} for i in nums: if i in m: m[i]+=1 else: m[i]=1 num=1 for i in m: num *= factorial(m[i]) den=factorial(len(nums)) return round((den/num),6) nums = [5,2,7] print(solve(nums))
इनपुट
[5,2,7]
आउटपुट
6.0