في عالم علوم الكمبيوتر، يعد خلط مصفوفة أو قائمة من العناصر عملية شائعة يمكن أن تكون مفيدة في تطبيقات مختلفة، بدءًا من توزيع نتائج اللعبة بشكل عشوائي إلى توزيع البطاقات في مجموعة البطاقات. واحدة من الخوارزميات الأكثر فعالية لهذا الغرض هي Fisher-Yates Shuffle، والمعروفة أيضًا باسم Knuth Shuffle. تضمن هذه الخوارزمية أن يكون كل تبديل للمصفوفة متساويًا في الاحتمال، مما يجعلها خيارًا مثاليًا لإنشاء خلطات عشوائية غير متحيزة.
في هذه المقالة، سنستكشف تطبيق Java لخوارزمية Fisher-Yates Shuffle. يقوم الكود المقدم بخلط مجموعة من الأعداد الصحيحة في مكانها بكفاءة، مما يدل على أناقة وفعالية هذه الخوارزمية.
تعمل خوارزمية Fisher-Yates Shuffle من خلال التكرار على المصفوفة من النهاية إلى البداية، وتبديل كل عنصر بعنصر تم اختياره عشوائيًا والذي يظهر مسبقًا في المصفوفة (بما في ذلك الموضع الحالي). تضمن هذه العملية أن جميع تبديلات المصفوفة محتملة بنفس القدر.
إليك تطبيق Java لخوارزمية Fisher-Yates Shuffle:
import java.util.*; class FYShuffleAlgorithm { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6}; shuffle(arr); } public static void shuffle(int[] arr) { Random rand = new Random(); for (int i = arr.length - 1; i > 0; i--) { int randomIndex = rand.nextInt(i 1); int tmp = arr[i]; arr[i] = arr[randomIndex]; arr[randomIndex] = tmp; } System.out.println(Arrays.toString(arr)); } }
شرح الكود
التهيئة:
تقوم الطريقة الرئيسية بتهيئة مصفوفة من الأعداد الصحيحة بالقيم {1، 2، 3، 4، 5، 6} ثم تستدعي طريقة الخلط لخلط هذه المصفوفة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3