تبديل العناصر في قائمة في Python عشوائيًا

اعمال

إذا كنت تريد تبديل (فرز عشوائي) عناصر قائمة (مصفوفة) في بايثون ، فاستخدم الوحدة العشوائية للمكتبة القياسية.

هناك وظيفتان: خلط ورق اللعب () ، والذي يقوم بفرز القائمة الأصلية عشوائيًا ، والعينة () ، والتي تُرجع قائمة جديدة تم فرزها عشوائيًا. يمكن استخدام 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]