Na ile losowa jest strona wyboru przeglądarki?

Na ile losowa jest strona wyboru przeglądarki?

Grzegorz Niemirowski
02.03.2010 00:15

Ekran wyboru przeglądarki to nie tylko aplikacja, którą Microsoft oferuje przez Windows Update, ale także strona internetowa. Słowacki serwis DSL.sk zwrócił uwagę, że przeglądarki na tej stronie nie są układane całkowicie losowo. Sprawie przyjrzał się Rob Weir.

Zaobserwowano, że przy przeglądaniu strony pod IE, Internet Explorer ma dużą tendencję do pojawia się na ostatnim miejscu. Z kolei Chrome pojawia się na pierwszych trzech miejscach znacznie częściej niż na czwartym i piątym. Przy oglądaniu tej samej strony pod Firefoksem wyniki były inne. Internet Explorer pojawiał się najczęściej na jednym z pierwszych trzech miejsc a Safari najczęściej na ostatnim. Pojawiły się teorie sugerujące, że preferowanie pewnych miejsc jest zabiegiem zamierzonym. Podejrzewano też nieprawidłowo działający generator liczb pseudolosowych. Okazało się, że prawda jest jeszcze ciekawsza.

Losowanie przeglądarek jest wykonywane w ten sposób, że w pierwotnej liście następuje losowe zamienianie miejsc poszczególnych przeglądarek. Pięć najpopularniejszych przeglądarek jest jednak układane oddzielnie od reszty, przez co zawsze znajdują się przed grupą przeglądarek mniej popularnych. Takie mieszanie w obrębie grupy można wykonać na kilka sposóbów, np. algorytmem Fishera–Yatesa. Można też np. posortować elementy według wygenerowanych losowo indeksów. Microsoft jednak, jak nieraz zdarza mu się to robić, zrezygnował ze sprawdzonego rozwiązania na rzecz własnego pomysłu. Wykorzystał on co prawda sortowanie, jednak stworzył nieprawidłowo działającą funkcję porównującą, która jest wykorzystywana przez metodę sort() obiektu klasy Array. Aby sortowanie działało poprawnie, funkcja porównująca musi działać w sposób spójny. Przykładowo, jeśli zwróci, że a jest większe od b, to w przypadku zamiany argumentów miejscami musi zwrócić, że b jest mniejsze od a. Funkcja, którą zaimplementował Microsoft nie spełnia tych warunków. Dlatego też losowanie nie przebiega prawidłowo i nie zapewnia w miarę równomiernego rozkładu prawdopodobieństw. Nie mamy więc do czynienia z zabiegiem celowym a z błędem programisty, który nie przemyślał ani nie przetestował swojego algorytmu.

Programy

Zobacz więcej
Źródło artykułu:www.dobreprogramy.pl
Oceń jakość naszego artykułuTwoja opinia pozwala nam tworzyć lepsze treści.
Wybrane dla Ciebie
Komentarze (37)