إذا كنت تريد تبديل (فرز عشوائي) عناصر قائمة (مصفوفة) في بايثون ، فاستخدم الوحدة العشوائية للمكتبة القياسية.
هناك وظيفتان: خلط ورق اللعب () ، والذي يقوم بفرز القائمة الأصلية عشوائيًا ، والعينة () ، والتي تُرجع قائمة جديدة تم فرزها عشوائيًا. يمكن استخدام sample () للسلاسل النصية والصفوف.
- تبديل القائمة الأصلية عشوائيًا:
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()
يمكن استخدام نموذج الوظيفة () في الوحدة النمطية العشوائية لإنشاء قائمة جديدة يتم فرزها عشوائيًا ، دون تغيير القائمة الأصلية.
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 () ترجع قائمة ، لذلك من الضروري معالجتها مرة أخرى إلى سلسلة أو tuple.
في حالة وجود سلسلة ، ستكون قائمة من الأحرف واحدة تلو الأخرى. لتسلسلها في سلسلة واحدة مرة أخرى ، استخدم طريقة الانضمام ().
sr = ''.join(random.sample(s, len(s)))
print(sr)
# bedca
بالنسبة إلى 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]