- 1
- 2
- 3
shuffle($answers);
shuffle($answers);
shuffle($answers);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+174
shuffle($answers);
shuffle($answers);
shuffle($answers);
Чтобы наверняка
Что такое перемешивание? Это случайная выборка из всех возможных вариантов перестановки элементов. Исходное значение входит в один из таких вариантов. Так что с точки зрения комбинаторики, исходное значение отвечает условию "перемешивание"
а я говорю, что в жопу эту комбинаторику-шмомбинаторику. с точки зрения юзера/логики прогарммы массив до shuffle'а неперемешан. взгляни на переменную: answers. Ты блин с точки зрения теории тоже перемешанный. Иди перемешивайся дальше :)
Если не верите в науку, попробую объяснить на пальцах и примерах.
Допустим есть массив из трех элементов. Имеем 4!=24 возможных вариантов. Чем первый набор хуже 3-го, 5-го или 20-го? По теории вероятности он может выпасть с равной степенью вероятности.
Второй пример - игра лото. Перед игрой все бочонки стояли по порядку, потом их поместили в мешок и перемешали, но, так получилось, что все бочонки вытянули по порядку. Здесь явно было перемешивание, сами же трясли мешок с бочонками
Ну и контрольный пример. Массив из двух элементов, по комбинаторике-шмомбинаторике возможно два варианта, но по Вашей логике всегда будет только один вариант.
По теме: действительно, исходный порядок тоже можно считать перемешанным. Но по логике программы нужно не "перемешать", а изменить порядок. Поэтому срач здесь неуместен.
но по Вашей логике должен быть только один вариант, но на самом деле будет два
Для чистоты эксперимента перемешиваем исходный массив. Из 10000 циклов вариант "123" выпадал около 1650, т.е. ~1/6 от 10000, что говорит о равномерности случайной выборки
сколько бы ты не делал shuffle, даже 100 раз ты все равно можешь вернутся в первое состояние(причем равновероятно на каждой из попыток)
3. под обязательное изменение состояния подошло бы что то вроде этого, но про это даже намека нет
$tmp = $array;
while($tmp === $array){
shuffle($array);
}
4. cfdev - сИди тупи дальше :)
5. Кстати отличный говнокод