ប្រសិនបើអ្នកចង់សាប់ (តម្រៀបដោយចៃដន្យ) ធាតុនៃបញ្ជី (អារេ) នៅក្នុង Python សូមប្រើម៉ូឌុលចៃដន្យនៃបណ្ណាល័យស្តង់ដារ។
មានមុខងារពីរ៖ shuffle() ដែលតម្រៀបបញ្ជីដើមដោយចៃដន្យ និងគំរូ() ដែលត្រឡប់បញ្ជីដែលបានតម្រៀបដោយចៃដន្យថ្មី។ sample() អាចត្រូវបានប្រើសម្រាប់ខ្សែ និង tuples ។
- រុះរើបញ្ជីដើម:
random.shuffle()
- បង្កើតបញ្ជីថ្មីដែលបានសាប់។:
random.sample()
- ច្របល់ខ្សែនិង tuple
- ជួសជុលគ្រាប់ពូជលេខចៃដន្យ
បើអ្នកចង់តម្រៀបតាមលំដាប់ឡើង ឬចុះជំនួសឲ្យចៃដន្យ ឬតាមលំដាប់បញ្ច្រាស សូមមើលអត្ថបទបន្ទាប់។
- អត្ថបទដែលទាក់ទង:ការតម្រៀបបញ្ជីនៅក្នុង Python៖ ភាពខុសគ្នារវាងការតម្រៀប និងតម្រៀប
រុះរើបញ្ជីដើម: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()
គំរូអនុគមន៍ () នៅក្នុងម៉ូឌុលចៃដន្យអាចត្រូវបានប្រើដើម្បីបង្កើតបញ្ជីថ្មីដែលត្រូវបានតម្រៀបដោយចៃដន្យដោយមិនផ្លាស់ប្តូរបញ្ជីដើម។
sample() គឺជាមុខងារដែលជ្រើសរើសដោយចៃដន្យ និងទាញយកធាតុពីបញ្ជីមួយ។ អាគុយម៉ង់ទីមួយគឺជាបញ្ជី ហើយអាគុយម៉ង់ទីពីរគឺជាចំនួនធាតុដែលត្រូវទៅយក។ សូមមើលអត្ថបទខាងក្រោមសម្រាប់ព័ត៌មានលម្អិត។
- អត្ថបទដែលទាក់ទង:ជ្រើសរើសធាតុដោយចៃដន្យពីបញ្ជីនៅក្នុង Python:
choice()
,sample()
,choices()
ប្រសិនបើចំនួនធាតុដែលត្រូវជ្រើសរើសតាមគំរូ() គឺជាចំនួនសរុបនៃធាតុនៅក្នុងបញ្ជី យើងទទួលបានបញ្ជីថ្មីជាមួយនឹងធាតុទាំងអស់ដែលបានតម្រៀបដោយចៃដន្យ។ ចំនួនសរុបនៃធាតុនៅក្នុងបញ្ជីគឺទទួលបានដោយ 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]
ច្របល់ខ្សែនិង tuple
ខ្សែអក្សរ និង tuples គឺមិនអាចផ្លាស់ប្តូរបាន ដូច្នេះប្រសិនបើអ្នកប្រើ 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
ប្រសិនបើអ្នកចង់សាប់ខ្សែអក្សរ ឬ tuple សូមប្រើ random.sample() ដែលបង្កើតវត្ថុថ្មី។
ទោះបីជានៅពេលដែលខ្សែអក្សរ ឬ tuple ត្រូវបានបញ្ជាក់ជាអាគុយម៉ង់ក៏ដោយ ក៏ random.sample() ត្រឡប់បញ្ជីមួយ ដូច្នេះចាំបាច់ត្រូវដំណើរការវាត្រឡប់ទៅជាខ្សែអក្សរ ឬ tuple វិញ។
ក្នុងករណីខ្សែអក្សរ វានឹងជាបញ្ជីតួអក្សរម្តងមួយៗ។ ដើម្បីភ្ជាប់ពួកវាទៅក្នុងខ្សែតែមួយម្តងទៀត សូមប្រើវិធី join()។
sr = ''.join(random.sample(s, len(s)))
print(sr)
# bedca
សម្រាប់ tuple ប្រើ tuple() ដែលបង្កើត 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]