यदि आप पायथन में एक सूची (सरणी) के तत्वों को फेरबदल (यादृच्छिक रूप से क्रमबद्ध) करना चाहते हैं, तो मानक पुस्तकालय के यादृच्छिक मॉड्यूल का उपयोग करें।
दो कार्य हैं: फेरबदल (), जो मूल सूची को बेतरतीब ढंग से क्रमबद्ध करता है, और नमूना (), जो एक नई यादृच्छिक रूप से क्रमबद्ध सूची देता है। नमूना () का उपयोग स्ट्रिंग्स और टुपल्स के लिए किया जा सकता है।
- मूल सूची में फेरबदल करें:
random.shuffle()
- एक नई, फेरबदल की गई सूची बनाएं।:
random.sample()
- शफ़ल स्ट्रिंग्स और टुपल्स
- यादृच्छिक संख्या बीज को ठीक करें
यदि आप यादृच्छिक, या उल्टे क्रम के बजाय आरोही या अवरोही क्रम में क्रमबद्ध करना चाहते हैं, तो निम्न लेख देखें।
मूल सूची में फेरबदल करें:random.shuffle()
रैंडम मॉड्यूल में फ़ंक्शन फेरबदल () मूल सूची को बेतरतीब ढंग से सॉर्ट कर सकता है।
import random
l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]
random.shuffle(l)
print(l)
# [1, 0, 4, 3, 2]
एक नई, फेरबदल की गई सूची बनाएं।:random.sample()
यादृच्छिक मॉड्यूल में फ़ंक्शन नमूना () का उपयोग एक नई सूची बनाने के लिए किया जा सकता है जो मूल सूची को बदले बिना यादृच्छिक रूप से क्रमबद्ध है।
नमूना () एक ऐसा फ़ंक्शन है जो सूची से किसी तत्व को यादृच्छिक रूप से चुनता है और पुनर्प्राप्त करता है। पहला तर्क एक सूची है, और दूसरा तर्क पुनर्प्राप्त किए जाने वाले तत्वों की संख्या है। विवरण के लिए निम्न आलेख देखें।
यदि नमूना () द्वारा चुने जाने वाले तत्वों की संख्या सूची में तत्वों की कुल संख्या है, तो हमें यादृच्छिक रूप से क्रमबद्ध सभी तत्वों के साथ एक नई सूची मिलती है। सूची में तत्वों की कुल संख्या लेन () द्वारा प्राप्त की जाती है।
मूल वस्तु नहीं बदली जाएगी।
l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]
lr = random.sample(l, len(l))
print(lr)
# [0, 3, 1, 4, 2]
print(l)
# [0, 1, 2, 3, 4]
शफ़ल स्ट्रिंग्स और टुपल्स
स्ट्रिंग्स और टुपल्स अपरिवर्तनीय हैं, इसलिए यदि आप मूल ऑब्जेक्ट को बदलने के लिए random.shuffle() का उपयोग करते हैं, तो आपको निम्न त्रुटि मिलेगी।TypeError
s = 'abcde'
# random.shuffle(s)
# TypeError: 'str' object does not support item assignment
t = tuple(range(5))
print(t)
# (0, 1, 2, 3, 4)
# random.shuffle(t)
# TypeError: 'tuple' object does not support item assignment
यदि आप एक स्ट्रिंग या टपल को फेरबदल करना चाहते हैं, तो random.sample() का उपयोग करें, जो एक नई वस्तु बनाता है।
यहां तक कि जब एक स्ट्रिंग या टपल को एक तर्क के रूप में निर्दिष्ट किया जाता है, तो random.sample() एक सूची देता है, इसलिए इसे वापस एक स्ट्रिंग या टपल पर संसाधित करना आवश्यक है।
एक स्ट्रिंग के मामले में, यह एक-एक करके वर्णों की सूची होगी। उन्हें फिर से एक स्ट्रिंग में संयोजित करने के लिए, join() विधि का उपयोग करें।
sr = ''.join(random.sample(s, len(s)))
print(sr)
# bedca
टुपल्स के लिए, टपल () का उपयोग करें, जो एक सूची से एक टपल बनाता है।
tr = tuple(random.sample(t, len(l)))
print(tr)
# (0, 1, 2, 4, 3)
यादृच्छिक संख्या बीज को ठीक करें
रैंडम मॉड्यूल के फंक्शन सीड () को एक मनमाना पूर्णांक देकर, रैंडम नंबर सीड को तय किया जा सकता है और रैंडम नंबर जनरेटर को इनिशियलाइज़ किया जा सकता है।
एक ही बीज के साथ आरंभीकरण के बाद, इसे हमेशा उसी तरह पुन: व्यवस्थित किया जाता है।
l = list(range(5))
random.seed(0)
random.shuffle(l)
print(l)
# [2, 1, 0, 4, 3]
l = list(range(5))
random.seed(0)
random.shuffle(l)
print(l)
# [2, 1, 0, 4, 3]