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
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Вопрос к программистам - 2 [2]
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
или же задача сводится к тому чтобы в зависимости от текущего состояния массива и некоторой константы мы получали псевдо shuffle, который всегда при одних и тех же аргументах будет выдавать один и тот же результат, но на первый взгляд этот результат будет казаться случайным?
----- Just do it
EuGen
Отправлено: 23 Декабря, 2013 - 14:37:00
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Panoptik
Последовательность на каждом шаге - то есть, при каждом вызове функции - будет меняться (в этом суть перемешивания). Но когда скрипт будет запущен заново, код выдаст те же последовательности (формально - последовательность последовательностей будет неизменна)
armancho7777777
Кольцо полностью удовлетворяет условию задачи, поскольку происходит перемешивание в начале, и каждый элемент будет связан со случайным (если я не прав, предложите алгоритм восстановления подарившего для того, кому известно лишь то, кому дарил он сам)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
IllusionMH
Отправлено: 23 Декабря, 2013 - 14:41:16
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
armancho7777777, эта задача не имеет решения для 3х человек, как писали выше, но имеет для 4+ человек и без разницы четные или нет.
В остальном - допиленный алгоритм верен, даже если делать кольцо из 3х, т.к. из кольца известны только двое.
Повторюсь, алгоритм рабочий, но не лучший, с нуля я бы делал как указано в первых двух ответах.
DelphinPRO
Отправлено: 23 Декабря, 2013 - 14:43:05
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
IllusionMH пишет:
Но нужно отдельно разобрать случай когда остается 1.
Он станет "Дедом Морозом" и будет раздавать подарки
----- Чем больше узнаю, тем больше я не знаю.
IllusionMH
Отправлено: 23 Декабря, 2013 - 14:43:41
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
Panoptik, это как инициализация генератора псевдослучайных чисел конкретным значением. (Добавление) DelphinPRO, я подразумевал, что когда в конце останется только один(горец) без пары, тогда будем изощряться.
Ну а если совсем один, тогда задача не имеет решения и нужно кидать исключение.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.