Я помогал кому-то с его кодом JavaScript, и мои глаза были пойманы секцией, которая выглядела так:
function randOrd(){
return (Math.round(Math.random())-0.5);
}
coords.sort(randOrd);
alert(coords);
Мой первый, хотя был: эй, это не сработает!. Но затем я немного экспериментировал и обнаружил, что он действительно по крайней мере, кажется, дает хорошо рандомизированные результаты.
Затем я сделал некоторый поиск в Интернете и почти в верхней части нашел статью из которой этот код был наиболее скопирован. Похоже на довольно респектабельный сайт и автора...
Но мое чувство кишки говорит мне, что это должно быть неправильно. Тем более, что алгоритм сортировки не указан стандартом ECMA. Я думаю, что разные алгоритмы сортировки приведут к различным неравномерным перетасовкам. Некоторые алгоритмы сортировки могут, вероятно, даже бесконечно...
Но как вы думаете?
И как еще один вопрос... как я теперь пойду и измерим, насколько случайны результаты этой техники перетасовки?
update: Я сделал некоторые измерения и опубликовал результаты ниже в качестве одного из ответов.