Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770 Форумы портала PHP.SU :: Версия для печати :: Вопрос к программистам [2]
или же задача сводится к тому чтобы в зависимости от текущего состояния массива и некоторой константы мы получали псевдо shuffle, который всегда при одних и тех же аргументах будет выдавать один и тот же результат, но на первый взгляд этот результат будет казаться случайным?
Panoptik
Последовательность на каждом шаге - то есть, при каждом вызове функции - будет меняться (в этом суть перемешивания). Но когда скрипт будет запущен заново, код выдаст те же последовательности (формально - последовательность последовательностей будет неизменна)
armancho7777777
Кольцо полностью удовлетворяет условию задачи, поскольку происходит перемешивание в начале, и каждый элемент будет связан со случайным (если я не прав, предложите алгоритм восстановления подарившего для того, кому известно лишь то, кому дарил он сам)
armancho7777777, эта задача не имеет решения для 3х человек, как писали выше, но имеет для 4+ человек и без разницы четные или нет.
В остальном - допиленный алгоритм верен, даже если делать кольцо из 3х, т.к. из кольца известны только двое.
Повторюсь, алгоритм рабочий, но не лучший, с нуля я бы делал как указано в первых двух ответах.
Panoptik, это как инициализация генератора псевдослучайных чисел конкретным значением. (Добавление) DelphinPRO, я подразумевал, что когда в конце останется только один(горец) без пары, тогда будем изощряться.
Ну а если совсем один, тогда задача не имеет решения и нужно кидать исключение.