"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > خلط المصفوفات باستخدام خوارزمية فيشر ييتس في جافا

خلط المصفوفات باستخدام خوارزمية فيشر ييتس في جافا

تم النشر بتاريخ 2024-11-07
تصفح:626

Shuffling Arrays with the Fisher-Yates Algorithm in Java

مقدمة

في عالم علوم الكمبيوتر، يعد خلط مصفوفة أو قائمة من العناصر عملية شائعة يمكن أن تكون مفيدة في تطبيقات مختلفة، بدءًا من توزيع نتائج اللعبة بشكل عشوائي إلى توزيع البطاقات في مجموعة البطاقات. واحدة من الخوارزميات الأكثر فعالية لهذا الغرض هي 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} ثم تستدعي طريقة الخلط لخلط هذه المصفوفة.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/imyusufakhtar/shuffling-arrays-with-the-fisher-yates-algorithm-in-java-28gc?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3