Slumpmässighet – EU-beslut


Vissa brukar anse att jag är något av en matematik-nörd i och med att jag tycker att det är intressant med siffror och analyser av olika slag. Redan tidigt i gymnasiet tyckte jag att lektionstakten inte överenstämde med mitt behov att lära mig, och jag satt istället och räknade fram primtal eller förlängde talserier för att underhålla mig själv. Därmed inte sagt att primtal eller talserier har något med statistisk analys att göra. I vilket fall anser jag att följande historia är både kul och lärorikt.

EU har tidigare klagat på Microsoft för att genom att leverera viss programvara med operativsystemet blir det svårare för konkurrenter att ta del av den marknaden. Förra året klagade EU på att Internet Explorer skickades med (och dessutom inte gick att avinstallera) samt föreslog att Microsoft skulle tillhandahålla en valmöjlighet för användaren vilken webbläsare som skulle installeras.

Microsoft försöker naturligtvis tillmötesgå EUs krav och har bland annat tillhandahållit ett valalternativ vid installationen.

Men naturligtvis misslyckades Microsoft med slumpmässigheten vid presentationen av webbläsarna. Kanske var det beroende på försök att uppnå den berömda Ballmer Peak eller så har Microsoft programmerare som inte tidigare sysslat med slumpprogrammering tidigare.

Oavsett anledning har det visat sig att slumpmässigheten i presentationen går att ifrågasätta och att webbläsarna hamnar på nästan samma plats varje gång.

Orsaken till att det inte blir någon jämn sannolikhet för varje webbläsare och varje position är att Microsoft väljer att sortera med funktionen slumpa ett värde mellan -0,5 och +0,5 istället för att använda någon beprövad algoritm.

Rob Weir skriver i Doing the Microsoft Shuffle: Algorithm Fail in Browser Ballot
The browser choice screen requires what we call a “random shuffle”. You start with an array of values and return those same values, but in a randomized order. This computational problem has been known since the earliest days of computing. There are 4 well-known approaches: 2 good solutions, 1 acceptable (“good enough”) solution that is slower than necessary, and 1 bad approach that doesn’t really work. Microsoft appears to have picked the bad approach. But I do not believe there is some nefarious intent to this bug. It is more in the nature of a “naive” algorithm”, like the bubble sort, that inexperienced programmers inevitably will fall upon when solving a given problem. I bet if we gave this same problem to 100 freshmen computer science majors, at least one of them would make the same mistake. But with education and experience, one learns about these things.