Python ရှိ စာရင်း (array) ၏ဒြပ်စင်များ (ကျပန်းစီရန်) ကို မွှေလိုပါက၊ စံစာကြည့်တိုက်၏ ကျပန်း module ကို အသုံးပြုပါ။
မူလစာရင်းကို ကျပန်းခွဲထုတ်သည့် လုပ်ဆောင်ချက်နှစ်ခုရှိသည်- နှင့် နမူနာ() သည် ကျပန်းခွဲထားသည့်စာရင်းအသစ်ကို ပြန်ပေးသည်။ sample() ကို strings နှင့် tuple များအတွက် သုံးနိုင်သည်။
- မူရင်းစာရင်းကို မွှေပါ။:
random.shuffle()
- အသစ်၊ အရှုပ်အရှင်းရှိသော စာရင်းတစ်ခု ဖန်တီးပါ။:
random.sample()
- ကြိုးများနှင့် tuple များကို မွှေနှောက်ပါ။
- ကျပန်းနံပါတ်အမျိုးအနွယ်ကိုပြင်ပါ။
ကျပန်းအစား ကြီးစဉ်ငယ်လိုက် သို့မဟုတ် ကြီးစဉ်ငယ်လိုက် စီလိုပါက အောက်ပါဆောင်းပါးကို ကြည့်ပါ။
- ဆက်စပ်ဆောင်းပါးများ-Python တွင် စာရင်းတစ်ခုကို စီရန်- စီထားခြင်းနှင့် စီထားခြင်းကြား ကွာခြားချက်
မူရင်းစာရင်းကို မွှေပါ။:random.shuffle()
ကျပန်း module ရှိ function 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() ကို အသုံးပြုပါ။
string သို့မဟုတ် tuple ကို argument တစ်ခုအဖြစ် သတ်မှတ်သည့်အခါတွင်ပင်၊ random.sample() သည် စာရင်းတစ်ခုကို ပြန်ပေးသည်၊ ထို့ကြောင့် ၎င်းကို string သို့မဟုတ် 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)
ကျပန်းနံပါတ်အမျိုးအနွယ်ကိုပြင်ပါ။
ကျပန်း module ၏ function seed() သို့ မထင်သလို ကိန်းပြည့်တစ်ခု ပေးခြင်းဖြင့် ကျပန်းနံပါတ်အမျိုးအနွယ်ကို ပြုပြင်နိုင်ပြီး ကျပန်းနံပါတ် ဂျင်နရေတာကို စတင်နိုင်ပါသည်။
တူညီသောမျိုးစေ့ဖြင့် အစပြုပြီးနောက်၊ ၎င်းကို အမြဲတမ်း အလားတူပုံစံဖြင့် ပြန်လည်စီစစ်သည်။
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]