जर तुम्हाला Python मधील सूची (अॅरे) चे घटक बदलायचे असल्यास (यादृच्छिकपणे क्रमवारी लावा) मानक लायब्ररीचे यादृच्छिक मॉड्यूल वापरा.
दोन फंक्शन्स आहेत: shuffle(), जे यादृच्छिकपणे मूळ सूचीची क्रमवारी लावते आणि नमुना(), जी नवीन यादृच्छिकपणे क्रमवारी लावलेली यादी परत करते. नमुना() स्ट्रिंग आणि ट्यूपल्ससाठी वापरला जाऊ शकतो.
- मूळ यादी शफल करा:
random.shuffle()
- एक नवीन, बदललेली यादी तयार करा.:
random.sample()
- शफल स्ट्रिंग आणि ट्यूपल्स
- यादृच्छिक संख्या बी निश्चित करा
तुम्हाला यादृच्छिक ऐवजी चढत्या किंवा उतरत्या क्रमाने किंवा उलट क्रमाने क्रमवारी लावायची असल्यास, पुढील लेख पहा.
मूळ यादी शफल करा:random.shuffle()
यादृच्छिक मॉड्यूलमधील फंक्शन 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()
यादृच्छिक मॉड्यूलमधील फंक्शन नमुना() मूळ सूची न बदलता यादृच्छिकपणे क्रमवारी लावलेली नवीन यादी तयार करण्यासाठी वापरली जाऊ शकते.
नमुना() हे एक फंक्शन आहे जे यादृच्छिकपणे सूचीमधून घटक निवडते आणि पुनर्प्राप्त करते. पहिला युक्तिवाद एक सूची आहे आणि दुसरा युक्तिवाद पुनर्प्राप्त करण्यासाठी घटकांची संख्या आहे. तपशीलांसाठी पुढील लेख पहा.
नमुना() द्वारे निवडल्या जाणार्या घटकांची संख्या ही यादीतील एकूण घटकांची संख्या असल्यास, आम्हाला सर्व घटक यादृच्छिकपणे क्रमवारी लावलेली एक नवीन यादी मिळेल. यादीतील घटकांची एकूण संख्या len() द्वारे प्राप्त केली जाते.
मूळ ऑब्जेक्ट बदलला जाणार नाही.
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
ट्यूपल्ससाठी, tuple() वापरा, जे सूचीमधून ट्यूपल तयार करते.
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]