В сфере информатики перетасовка массива или списка элементов — это обычная операция, которая может быть полезна в различных приложениях, от рандомизации результатов игры до распределения карт в колоде. Одним из наиболее эффективных алгоритмов для этой цели является перемешивание Фишера-Йейтса, также известное как перемешивание Кнута. Этот алгоритм гарантирует, что каждая перестановка массива равновероятна, что делает его идеальным выбором для создания несмещенных случайных перетасовок.
В этой статье мы рассмотрим Java-реализацию алгоритма Fisher-Yates Shuffle. Предоставленный код эффективно перемешивает массив целых чисел, демонстрируя элегантность и эффективность этого алгоритма.
Алгоритм Фишера-Йейтса «Перетасовка» работает путем перебора массива от конца к началу, заменяя каждый элемент случайно выбранным элементом, который появляется раньше в массиве (включая текущую позицию). Этот процесс гарантирует, что все перестановки массива равновероятны.
Вот 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 для перетасовки этого массива.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3