7 забавных способов перетасовать массив случайных чисел в Python

Перетасовка массива случайными числами — распространенная задача в программировании, и изучение различных методов достижения этой цели может оказаться весьма интересным. В этой статье блога мы рассмотрим семь творческих способов перетасовки массива с использованием случайных чисел в Python. Так что хватайте редактор кода и приступайте!

Метод 1: использование функции random.shuffle()
Модуль Random в Python предоставляет удобную функцию под названием shuffle(), которая перемешивает элементы массива на месте. Вот пример:

import random
my_array = [1, 2, 3, 4, 5]
random.shuffle(my_array)
print(my_array)

Метод 2: использование функции sorted() со случайным ключом
Вы также можете перетасовать массив, отсортировав его с помощью случайного ключа. Этот метод использует функцию sorted()с лямбда-функцией в качестве ключа. Вот пример:

import random
my_array = [1, 2, 3, 4, 5]
shuffled_array = sorted(my_array, key=lambda x: random.random())
print(shuffled_array)

Метод 3: использование функции numpy.random.shuffle()
Если вы работаете с массивами NumPy, вы можете использовать функцию shuffle()из numpy.randomмодуль. Эта функция перемешивает элементы массива NumPy на месте. Вот пример:

import numpy as np
my_array = np.array([1, 2, 3, 4, 5])
np.random.shuffle(my_array)
print(my_array)

Метод 4: использование функции random.sample()
Функция random.sample()может использоваться для случайного выбора элементов из массива без замены. Выбирая все элементы, вы эффективно перемешиваете массив. Вот пример:

import random
my_array = [1, 2, 3, 4, 5]
shuffled_array = random.sample(my_array, len(my_array))
print(shuffled_array)

Метод 5: использование алгоритма Фишера-Йейтса
Алгоритм Фишера-Йейтса — популярный алгоритм для перетасовки массива на месте. Он работает путем перебора массива, заменяя каждый элемент случайно выбранным элементом из оставшейся неперетасованной части. Вот реализация на Python:

import random
def fisher_yates_shuffle(arr):
    for i in range(len(arr) - 1, 0, -1):
        j = random.randint(0, i)
        arr[i], arr[j] = arr[j], arr[i]
my_array = [1, 2, 3, 4, 5]
fisher_yates_shuffle(my_array)
print(my_array)

Метод 6: использование функции itertools.permutations()
Функция itertools.permutations()генерирует все возможные перестановки массива. Выбирая случайную перестановку, вы эффективно перетасовываете массив. Вот пример:

import itertools
import random
my_array = [1, 2, 3, 4, 5]
permutations = list(itertools.permutations(my_array))
shuffled_array = random.choice(permutations)
print(list(shuffled_array))

Метод 7: использование пользовательского алгоритма перемешивания
Наконец, вы можете реализовать свой собственный алгоритм перемешивания. Один простой подход — перебрать массив и заменить каждый элемент случайно выбранным элементом из всего массива. Вот пример:

import random
def custom_shuffle(arr):
    for i in range(len(arr)):
        j = random.randint(0, len(arr) - 1)
        arr[i], arr[j] = arr[j], arr[i]
my_array = [1, 2, 3, 4, 5]
custom_shuffle(my_array)
print(my_array)

Перетасовку массива случайными числами в Python можно выполнить различными методами. В этой статье мы рассмотрели семь различных подходов, включая использование встроенных функций, таких как random.shuffle()и sorted(), а также реализацию собственных алгоритмов, таких как перетасовка Фишера-Йейтса. Не стесняйтесь пробовать эти методы и экспериментировать со своими вариациями. Приятного перетасовки!