@NaM_44

Какие существуют методы перемешивания массива в случайном порядке?

Нужен метод перемешивания массива (БЕЗ shuffle)
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
Методов перемешивания столько же сколько методов сортировки (разработанных на коленке или имеющие конкретные названия). Просто применяете к функции сравнения в ядре функции сортировки random с разной вероятностью перестановки двух элементов - получаете свой метод перемешивания.
usort($a, function($elem_1, $elem_2)
{
  return rand(0, 1) == 1 ? 1 : -1;
});
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
<?php

$input = range('a', 'z');

$result = my_shuffle($input);
$result2 = my_shuffle($input, true);

var_dump($input);
var_dump($result);
var_dump($result2);

function my_shuffle(array $input, bool $preserve_keys = false): array
{
    $result = [];
    while (count($input) > 0) {
        $rand_key = array_rand($input, 1);
        if ($preserve_keys) {
            $result[$rand_key] = $input[$rand_key];
        } else {
            $result[] = $input[$rand_key];
        }

        unset($input[$rand_key]);
    }

    return $result;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы