- 1
- 2
- 3
shuffle($answers);
shuffle($answers);
shuffle($answers);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+174
shuffle($answers);
shuffle($answers);
shuffle($answers);
Чтобы наверняка
striker 21.04.2010 08:21 # +9
Death 21.04.2010 08:34 # 0
mrbig66 21.04.2010 08:42 # 0
cfdev 21.04.2010 09:06 # 0
murz 21.04.2010 09:45 # 0
Что такое перемешивание? Это случайная выборка из всех возможных вариантов перестановки элементов. Исходное значение входит в один из таких вариантов. Так что с точки зрения комбинаторики, исходное значение отвечает условию "перемешивание"
cfdev 21.04.2010 10:28 # −3
а я говорю, что в жопу эту комбинаторику-шмомбинаторику. с точки зрения юзера/логики прогарммы массив до shuffle'а неперемешан. взгляни на переменную: answers. Ты блин с точки зрения теории тоже перемешанный. Иди перемешивайся дальше :)
murz 21.04.2010 11:09 # +2
Если не верите в науку, попробую объяснить на пальцах и примерах.
Допустим есть массив из трех элементов. Имеем 4!=24 возможных вариантов. Чем первый набор хуже 3-го, 5-го или 20-го? По теории вероятности он может выпасть с равной степенью вероятности.
Второй пример - игра лото. Перед игрой все бочонки стояли по порядку, потом их поместили в мешок и перемешали, но, так получилось, что все бочонки вытянули по порядку. Здесь явно было перемешивание, сами же трясли мешок с бочонками
Ну и контрольный пример. Массив из двух элементов, по комбинаторике-шмомбинаторике возможно два варианта, но по Вашей логике всегда будет только один вариант.
UncleAli 21.04.2010 11:26 # 0
По теме: действительно, исходный порядок тоже можно считать перемешанным. Но по логике программы нужно не "перемешать", а изменить порядок. Поэтому срач здесь неуместен.
murz 21.04.2010 11:29 # 0
murz 21.04.2010 11:27 # 0
но по Вашей логике должен быть только один вариант, но на самом деле будет два
mrbig66 21.04.2010 12:31 # 0
murz 21.04.2010 12:54 # +2
Для чистоты эксперимента перемешиваем исходный массив. Из 10000 циклов вариант "123" выпадал около 1650, т.е. ~1/6 от 10000, что говорит о равномерности случайной выборки
mrbig66 21.04.2010 13:58 # +1
guest 28.04.2010 16:07 # +1
сколько бы ты не делал shuffle, даже 100 раз ты все равно можешь вернутся в первое состояние(причем равновероятно на каждой из попыток)
3. под обязательное изменение состояния подошло бы что то вроде этого, но про это даже намека нет
$tmp = $array;
while($tmp === $array){
shuffle($array);
}
4. cfdev - сИди тупи дальше :)
5. Кстати отличный говнокод
striker 21.04.2010 13:44 # +2
murz 21.04.2010 11:12 # +1
Shiz89 21.04.2010 16:06 # +2
Death 21.04.2010 16:40 # 0
Klesk 23.04.2010 07:40 # −1
guest 28.04.2010 16:52 # +2