У Microsoft не получается предлагать браузеры в случайном порядке

    На хабре уже писали о модуле выбора браузера для европейских пользователей: «Модуль выбора браузеров появляется в качестве обновлений Windows. Сразу показывается пять самых популярных (Apple Safari, Google Chrome, Microsoft Internet Explorer, Mozilla Firefox и Opera). Причем в случайном порядке.»

    Как выяснили ребята со словацкого сайта DSL.sk, у модуля большие проблемы именно со случайным порядком вывода браузеров. Страница, с помощью которой предпологается выполнять требования Евросоюза, не выводит список браузеров в случайном порядке, как предполагалось. Вместо общепринятых алгоритмов используется наихудший вариант реализации перемешивания списка браузеров через сортировку массива с функцией сравнения, возвращающей случайный результат. Из-за этого вместо равновероятного размещения браузеров в списке получается смещённое. Таким образом, для IE вероятность оказаться на последнем месте первой страницы почему-то оказалась наибольшей (~50%)! Однако при этом он всегда показывается изначально на первом месте, и только после окончания «перемешивания» меняет своё местоположение. Что интересно, указанный выше алгоритм выдаётся первым при поиске по «javascript randomize array» как в google, так и в bing :)

    image

    Технические подробности расследования (на английском).

    P.S.: Как подсказал naum код на странице поправили.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 65

      +11
      Все никак не успокоятся. Теперь еще и сортировка не так как нужно.
      В любом случае чисто случайная невозможна, разве что на квантовых компьютерах, хотя не факт.
        +21
        По ссылке можно прочитать о том, что если использовать алгоритм Фишера-Ятса (Fisher–Yates shuffle), Javascript-код которого приведен в Википедии, можно добиться хороших результатов:
          0
          Да это все понятно, мне просто сам факт всякой подобной шумихи забавляет.
          Впрочем, это же все во имя великой справедливости, но закон о том что всех удовлетворить невозможно никто не отменял.
            +9
            Я не думаю что кто-то специально искал возможность «опустить» Майкрософт и поднять шумиху. Это просто интересный факт, в статье рассказано о методике тестирования и способах исправления.

            Лично я писал этот пост не для того чтобы поглумиться на программистами Microsoft, а в качестве рассказа о типичной проблеме. Согласитесь, этот случай послужит для многих отличным примером и позволит избежать подобных проблем в будущем.
              –2
              Здесь никого я не виню. Меня просто поражает сам факт такого большого шума вокруг этого. Какие все жадные до $$, прикрываясь за ширмой борьбы за справедливостью. В общем лицемерие. Особенно Opera отличилась на этом поприще(пусть простят меня любителя этого хорошего браузера).
                –2
                Вы знаете, на опере просидел всю свою интернетную жизнь, но в данном случае я с вами полностью согласен, пилят мс по поводу и без, аже к алгоритму сортировки придолбались, вот делать им нехуй выбирать наиболее оптимальный алгоритм, итак отказаись от собственного браузера
                  +2
                  >Как выяснили ребята со словацкого сайта DSL.sk, у модуля большие проблемы именно со случайным порядком вывода браузеров.

                  Вы статью читали? Причём здесь опера?
                    0
                    >Какие все жадные до $$, прикрываясь за ширмой борьбы за справедливостью
                    это была фраза «между прочим», типа воспоминания череды событий, не более
            0
            Не ребят, тут в ряд Фурье нужно брузеры раскладывать.
          –15
          будут опять отмазываться, мол «куча строчек кода, за всем не уследишь», тьфу!

          многие пользователи уже давно сделали свой выбор в пользу полюбившегося им браузера, и то, на каком месте стоит тот или иной из предлагаемых на странице выбора в винде, не повлияет ни на что.
            +3
            опять оштрафуют, чо
              +5
              Не, ну если по результатам сортировки пользователь видит IE на последнем месте, то лично я как верстальщик совсем даже не против использования этого алгоритма :)
                +5
                Запоминается первое и последнее. Это тоже ход, только не такой явный.
                  +2
                  Де факто использовался алгоритм, которым первым предложил поисковик Google :)
                –3
                Честно говоря, не ожидал увидеть этот бред на хабре.
                Там используется обычный рандомизатор, который никогда не даст истинно случайную последовательность.

                Люди верят в то, во что хотят верить. Если человек захочет, он найдет закономерность в случайно с генерированной последовательности цифр длинной в 100000 символов.
                  +1
                  Так она там есть. Это первые 100000 символов переодичной последовательности (состоящей из повторения этой последовательности).
                  Вопрос — что считать «истинно случайной». Отвечающей какому-нибудь из классических распределений с погрешностью не больше X? Такое вполне возможно.
                    +8
                    Это не вера, это математический алгоритм. Испытание нужно было только для проверки и без того очевидных вещей.
                      +5
                      Дело не в том, какой источник случайных чисел там использован, дело в том каково распределение браузеров в последовательности. Форма распределения — объективная штука, она не зависит от предпочтений экспериментатора.

                      «Обычные» рандомизаторы генерируют равномерно распределённые случайные числа.
                      А если после множества проверок IE гораздо чаще оказывается на пятом месте, чем на любом другом — кто-то где-то смухлевал…
                      –5
                      Когда уже закончатся дни ИЕстерики на хабре?
                        +1
                        Какой смысл дебатов? Главное в случайном порядке, что еще нужно…
                          +3
                          Судя по статье, используется как раз общепринятый алгоритм ;-)
                            –2
                            но они видимо не смогли его нормально реализовать :(
                            –3
                            >предпологается
                            >предполагалось
                            И все же, как правильно?
                            • НЛО прилетело и опубликовало эту надпись здесь
                                +6
                                Идём читать исходники (http://www.browserchoice.eu/resources/scripts/page.js). Фактически перемешивание осуществляется таким кодом:
                                function RandomSort (a,b)
                                {
                                return (0.5 - Math.random());
                                }

                                var browsers = new Array("IE8","Firefox","Opera","Chrome","Safari");
                                browsers.sort(RandomSort);

                                Результирующее распределение сильно зависит от имплементации Array.sort и нифига не равномерно. Похоже, мелкомягкие отдали написание сего рандомизатора индусу-быдлокодеру и даже не подумали проверить.
                                  –3
                                  а не пофигу? оно ведь сортирует
                                    –1
                                    Можете расказать как может зависить от реализации Array.sort?
                                      0
                                      Немного поэкспериментировал с разными сортировками: pastebin.com/YSi8GvDC
                                      Вот результаты:
                                      Insertion sort
                                      Pos\Val a b c d e
                                      0 6.25% 6.25% 12.50% 25.00% 50.00%
                                      1 33.59% 11.72% 10.94% 18.75% 25.00%
                                      2 22.07% 32.23% 19.14% 14.06% 12.50%
                                      3 19.04% 24.90% 28.71% 21.09% 6.25%
                                      4 19.04% 24.90% 28.71% 21.09% 6.25%

                                      Bubble sort
                                      Pos\Val a b c d e
                                      0 34.57% 28.91% 20.12% 10.16% 6.25%
                                      1 23.83% 29.49% 24.02% 16.41% 6.25%
                                      2 20.51% 20.51% 26.17% 20.31% 12.50%
                                      3 14.84% 14.84% 17.19% 28.12% 25.00%
                                      4 6.25% 6.25% 12.50% 25.00% 50.00%

                                      Python internal sort
                                      Pos\Val a b c d e
                                      0 32.23% 12.30% 16.41% 21.88% 17.19%
                                      1 16.60% 32.62% 16.41% 23.44% 10.94%
                                      2 12.11% 23.83% 28.12% 14.06% 21.88%
                                      3 14.06% 24.22% 17.97% 21.88% 21.88%
                                      4 25.00% 7.03% 21.09% 18.75% 28.12%

                                        0
                                        Я к сожалению не читаю питон ;(… но поинт не в том. Сортировка это детерминированная штука. Недетерминированость вносит рандомайзер. Ну еще в теории интерпритация результата сортировочного метода (например если он вернул 0). Но я так понимаю вторым можно пренебреч так как выполняется на одинаковой реализации.

                                        Из вашего кода. Последовательность рандомных чисел у вас одинаковая для всех методов сортировки?
                                    +8
                                    Ну даешь, ядрена вошь!
                                    И олень тебе не гож?
                                    А вчерась мытарил душу:
                                    Вынь оленя да положь!..

                                    Коли ты и так богат,--
                                    Я верну его в Багдад.
                                    Кто там нонича у власти? --
                                    То-то парень будет рад!..
                                    (с) Cказ про Федота-стрельца
                                      0
                                      такой бред %)
                                        –2
                                        Это уже больше походит не на жажду равноправия браузеров, а на попытки обхаять майкрософт) (Я про шумиху вокруг порядка вывода браузеров)
                                        Кстати, мысль использовать такой вариант, ИМХО пришла-бы в головы работников любой(ИМХО) фирмы сразу же.:)) Неудивительно, что они её реализовали именно так:)

                                        И вообще лично меня бесит, что принимаются такие решения… ну это нечестно как-то по отношению к самому майкрософт… мол вот они гады этакие не дают пользователю выбора
                                          –2
                                          Никто не запрещает залезть на сайт мозиллы и качнуть Firefox.,,,
                                            +4
                                            Вы не поверите, но многие даже не знают что бывает другой «интернет»… :)
                                              –1
                                              Я это прекрасно знаю, просто опупительно прекрасно, но сейчас по всем каналам… уже есть программы про интернет итд… в конце концов вся молодеж лет 10 уже об этом знает, и если люди которым больше 30-40 не желают о них(альтернативных браузерах) знать — то зачем их заставлять.
                                              Нас же(разработчиков) никто не заставляет поддерживать IE6.

                                              Но накидыватся на IE вообще, уже некрасиво как-то получается… в той же Opera тоже есть косяки,
                                              да и в Firefox не все идеально(хотя-бы скорость его загрузки)

                                              Нужно анализировать всё в целом, а некоторые услышали (melkosoft sucks) и даже не задумываясь (почему?) повторяют как попугаи… меня вот это бесит)
                                                0
                                                от того, что они увидят картинку с выбором каких-то странных программ ничего не измениться. Тот, кто хотел уже перешел, а тот, кто не знает, что это вообще за фигня, если и поставит другой браузер, то будет сильно материться, когда увидит, что привычные кнопки куда-то пропали. Мой прогноз — 1-2% в результате этой показухи отойдет от мелкомягких (1-2% от доли ИЕ сегодня).
                                              –5
                                              Да пофиг на самом деле как выводится.
                                              Решение еврокомиссии вообще реально бред кобылы сивой.
                                              Следующим шагом, следуя их логике нужно запретить автоматическую установку Safari в MacOS.
                                              И в дистрибутивах линукса тоже не устанавливать браузер при установке…
                                                +3
                                                Топик о том, как можно криво применять алгоритмы. Ты говоришь «фигня это все» и переводишь тему на брюзжание о бреде. Потом идешь в твиттер и постишь, что на хабре опять статья о бреде. Во истину, каждый видит то, что хочет.
                                                +1
                                                Раз за разом меня посещает желание собрать воедино случаи проведения «серьёзных» исследований и расследований на «значимые» и «судьбоносные» темы. Экран выбора браузера – штука полезная, хотя острая необходимость в нём сомнительна в высшей степени. А уж порядок расположения браузеров в окне настолько плоскоперпендикулярен, что даже говорить неловко. Однако же в доску сурьёзные братья-словаки, видимо, порешали уже все проблемы и исследовали всё, что исследования требует. Во всяком случае, данное конкретное исследование является полным аналогом той самой собаки, которой делать было нефиг и она под хвостом у себя вынюхивала.
                                                –1
                                                В любом случае, если они (MS) сделали это специально, то это круто, да.
                                                  –1
                                                  и нашлись же люди, которым настолько нечего делать, что они такие «исследования» проводят. и вроде ж не бретанские учёные…
                                                    0
                                                    Кризис в мире, у многих полно свободного времени ;)
                                                    –2
                                                    та ну трындец. та какая разница! пусть по алфавиту выстроят и успокоятся.
                                                      +2
                                                      Корейский рандом
                                                        –2
                                                        Почему я не удивлен?
                                                          +3
                                                          Ненавижу такие диаграммы… хрен разберёшь что как к чему относиться нормально. Даже когда-то давно пробегала статья на хабре про то как легко можно вводить в заблуждение подобными диаграммами.
                                                            0
                                                            Я понял эту диаграмму как сколько раз и на каком месте появлялся каждый браузер.
                                                            Только вот не все видно :(
                                                            –2
                                                            Маразм крепчал
                                                              –1
                                                              Кто бы сомневался в Microsoft. :)
                                                              Им за дверь, они в окно…
                                                                –1
                                                                Ну и что, что он на последнем месте, зато это все-таки IE8, а не IE6.
                                                                  0
                                                                  Вообше, самое заметное — это третье место… В центре.
                                                                    0
                                                                    Текст скопировали с Linux.org.ru и даже ссылку не указали.
                                                                      +1
                                                                      У Майкрософт ничего еще с первого раза не получалось)
                                                                      ну ничего, выпустят пару апдейтов, потом кто-нибудь еще дыру или баг найдет, там поди, еще и откажутся от выбора дефолтного броузера, в силу невозможности безопасной организации алгоритма сортировки))
                                                                        0
                                                                        Интересно, почему справедливости ради, не принудили Apple показывать такой экран на Маках. А ситуация ничем не отличается, браузер один — чем не монополия?
                                                                        Меня вот Chrome под Mac OS очень порадовал!
                                                                          +1
                                                                          доля рынка windows гораздо больше, чем у mac os
                                                                          +2
                                                                          Алгоритм был приведен в порядок :) Не поверите.

                                                                          function GenerateBrowserOrder()
                                                                          {
                                                                          var c=[0,1,2,3,4],
                                                                          a=[];
                                                                          for(var b=5;b<dataBrowsers.length;b++)
                                                                          a.push(b);
                                                                          ArrayShuffle©;
                                                                          ArrayShuffle(a);
                                                                          aBrowserOrder=c.concat(a)
                                                                          }

                                                                          function ArrayShuffle(a)
                                                                          {
                                                                          var d,
                                                                          c,
                                                                          b=a.length;
                                                                          while(b)
                                                                          {
                                                                          c=Math.floor(Math.random()*b);
                                                                          d=a[--b];
                                                                          a[b]=a[c];
                                                                          a[c]=d
                                                                          }
                                                                          }
                                                                            +1
                                                                            Видно, что чуть более продвинутый школьник переписывал )
                                                                              0
                                                                              Спасибо, порадовали! Не владею best practices в контексте явы, но даже мне показалось, что написано не лучшим макаром :)
                                                                            –2
                                                                            Если смотреть с точки зрения бизнеса, то МС молодцы, сражаются до последнего. Это говорит что есть порох в пороховницах :).
                                                                              0
                                                                              … и ягоды в ягодицах?
                                                                              0
                                                                              Интересно, вот когда бык видит красную тряпку, он задумывается перед тем, как наброситься на неё?)) Наверное нет, это на уровне инстинкта)))
                                                                              У меня складывается впечатление, что если начать говорить что-то хорошее о Microsoft на Хабре тебя заминусуют:))) Мелочь, но обидно) Обидно, что никто не задумается и не попытаеться разобратся сам:)
                                                                                0
                                                                                Я тут ещё раз проанализировал ситуацию и подвёл черту под этим вопросом.
                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                    0
                                                                                    кстати если открыть www.browserchoice.eu/BrowserChoice/browserchoice_en.htm с отключенным JS, то IE будет первым, потом FF, Opera, Chrome, и последним Safari

                                                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                    Самое читаемое