«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Перетасовка массивов с помощью алгоритма Фишера-Йейтса на Java

Перетасовка массивов с помощью алгоритма Фишера-Йейтса на Java

Опубликовано 7 ноября 2024 г.
Просматривать:400

Shuffling Arrays with the Fisher-Yates Algorithm in Java

Введение

В сфере информатики перетасовка массива или списка элементов — это обычная операция, которая может быть полезна в различных приложениях, от рандомизации результатов игры до распределения карт в колоде. Одним из наиболее эффективных алгоритмов для этой цели является перемешивание Фишера-Йейтса, также известное как перемешивание Кнута. Этот алгоритм гарантирует, что каждая перестановка массива равновероятна, что делает его идеальным выбором для создания несмещенных случайных перетасовок.

В этой статье мы рассмотрим Java-реализацию алгоритма Fisher-Yates Shuffle. Предоставленный код эффективно перемешивает массив целых чисел, демонстрируя элегантность и эффективность этого алгоритма.

Алгоритм перемешивания Фишера-Йейтса

Алгоритм Фишера-Йейтса «Перетасовка» работает путем перебора массива от конца к началу, заменяя каждый элемент случайно выбранным элементом, который появляется раньше в массиве (включая текущую позицию). Этот процесс гарантирует, что все перестановки массива равновероятны.

Реализация Java-кода

Вот Java-реализация алгоритма Фишера-Йейтса 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));
    }
}

Пояснение Кодекса
Инициализация:
Основной метод инициализирует массив целых чисел arr значениями {1, 2, 3, 4, 5, 6}, а затем вызывает метод shuffle для перетасовки этого массива.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/imyusufakhtar/shuffling-arrays-with-the-fisher-yates-algorithm-in-java-28gc?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected] удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3