Pull to refresh

Comments 17

Не совсем, генерация случайных перестановок будет неравномерной, но в вашем случае, вероятно, это не так важно.

UFO just landed and posted this here
Потому что нужно было все это делать на стороне клиента, seed должен был быть разным для одного пользователя для каждого теста, который он начинал (почти разный, если бы так совпало и рандомайзер сгенерил бы одинаковый, то ладно), ну и к тому-же тасование Фишера-Йетса не вариант. Вот такой вот был запрос ¯\_(ツ)_/¯
UFO just landed and posted this here
Шафлить нужно было на клиенте. Мое решение, которое я применил линейное, квадратичное это дополнение, чтоб найти нужную пермутацию. Её мы не использовали, ибо не надо было. Про СУБД не знал, но буду знать
UFO just landed and posted this here
Решение, которое было применено мной на реально проекте то, которое идет до
Если это именно то, что вы искали, то применяем данный код для вашей ситуации. Однако, хоть он и генерирует случайную последовательность чисел (а именно это мне и было нужно), благодаря нему нельзя получить n-ную последовательность. Чтобы исправить ситуацию, мы немного дополним наш код:

После просто дополнение о пермутациях, чтоб не уткнуться в большое значение факториала, с ограничениеями, которые я описал. До этого нет циклов в цикле
UFO just landed and posted this here

Возможно я что-то путаю, но при перемешивании Фишера один и тот же элемент может быть перемещен несколько раз. А тут такого нет
UPD:
Забейте, я снова ступил. Почему-то помнил что это именно так, но перепроверил и это не так. В общем, можете не обращать на то, что я писал ранее

UFO just landed and posted this here
Это я щас на джаве все написал, а тогда вовсе не на ней писал. Да и хоть тут можно указать объект рандома, метод использует тасование Фишера-Йетса, а нам именно нужна была последовательность. То есть если какой-то элемент сел на одно место, там и должен сидеть
Оно именно так и работает. shuffle с заданным Random дает стабильный результат.
Я не говорю, что результат нестабильный. Разве что ошибся с алгоритмом, перечитал доки и да, там не алгоритм Фишера-Йетса, как я думал. Но в любом случае, писалось все тогда не на джаве, я щас потому что мне просто нравится алгоритмы на ней писать
Вы уже раза 3 написали, что Фишер-Йетс не подходит (к слову большое спасибо, я знал этот алгоритм, но не знал, что он именной), но совершенно непонятно почему. Исходя из той задачи и того исходного решения, которое вы описали, создается ощущение, что подходит абсолютно любой алгоритм равномерной генерации перестановок. Все, что нужно сделать — это запомнить seed.
Я уже написал выше, что ошибся. Я помнил, что данный алгоритм может менять местами один и тот же элемент, но так как я ошибся, претензии к нему отменяются

"Делаем два списка. Список четных чисел и список нечетных..."
Так напомнило )

Sign up to leave a comment.

Articles