Как стать автором
Обновить

Комментарии 17

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

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

После просто дополнение о пермутациях, чтоб не уткнуться в большое значение факториала, с ограничениеями, которые я описал. До этого нет циклов в цикле
НЛО прилетело и опубликовало эту надпись здесь

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

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

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории