Danske Spil: Sådan gav algoritme-fejl nordjysk spillefugl samme Joker-kupon to gange

Algoritmen, der spytter joker-tal ud på Danske Spils kuponer, blev fodret med det samme starttal to gange, lyder forklaringen fra Danske Spil på et helt usandsynligt sammentræf.

Med en sandsynlighed på 1 til 100 billioner var der enten tale om noget af et sammentræf, eller også var jokeren virkelig løs, da en mand fra Hirtshals henvendte sig til Danske Spil med sine to joker-kuponer, hvor begge de to joker-tal var ens.

Undersøgelsen er stadig i gang, men it-chefen for Danske Spil kalder det for ‘meget plausibelt’, at det var den tilfældighedsalgoritme, der beregner tallene på kundernes kupon, der var blevet fodret med det samme start-tal, kaldet seed, to gange.

Tallene som genereres på kuponen bliver nemlig til via en såkaldt pseudo-tilfældighedsgenerator. Det er en algoritme, der som sådan ikke producerer et tilfældigt tal, fordi udfaldet er bestemt af det start-tal, man fodrer algoritmen med.

»Der er tale om en algoritme, der i sin natur er deterministisk, altså forudsigelig, men med så stort et udfaldsrum, at det i praksis er umuligt at forudsige udfaldet,« forklarer Danske Spils it-chef, Søren Weeke, til Version2.

Da algoritmen er baseret på at få et unikt seed-tal pr. trækning, har Danske Spil måttet erkende, at algoritmen har spyttet helt identiske joker-tal ud hen over de to trækninger.

Han forklarer, at ikke alle producerede joker-tal nødvendigvis har været i brug. Det hænger sammen med, at kunderne kan annullere deres kupon, så det anvendte joker-tal igen bliver taget ud af lodtrækningen. Hvor mange dobbeltgængere, der reelt har været i omløb, er Danske Spil nu i gang med at undersøge.

Sand og falsk tilfældighed

Søren Weeke fortæller videre, at der i forbindelse med joker-spillet er to forskellige tilfældighedsmekanismer i brug. Udtrækningen af selve jokertallet, der er ét syv-cifret tal, som trækkes to gange om ugen (onsdag og lørdag), sker ved hjælp af en certificeret tilfældighedsgenerator.

Denne generator producerer ifølge Søren Weeke ren tilfældighed, takket være kvantemekanikkens indfødte ubestemmelighed.

»På vores Joker-trækning, der kører hver onsdag og lørdag, danner vores system syv tilfældige tal. Til at danne disse tal benytter vi en tilfældighedsgenerator der er baseret på en fysisk komponent med en foton-separator,« siger Søren Weeke til Version2.

Han understreger, at spillet, som kuponerne gælder for, ikke er blevet korrumperet af fejlen, da den fysiske tilfældighedsoperation, som producerer den magiske syv-cifrede kombination ikke fejler noget.

»Så længe selve trækningen er tilfældig, og der ikke er nogen systematik i de numre, der står på kuponen, så er den enkeltes vinderchance uændret. Det, der selvfølgelig er risiko for, er, at tallene på kuponerne ikke er spredt pænt ud, og man risikerer at skulle dele præmien med flere,« siger Søren Weeke til Version2.

Opdateret 11.32: Præcisering af, at der var to ens jokertal på de to kuponer i første afsnit.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (31)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Pelle Söderling

Jeg kan forstå at små startups ofte laver den fejl at bruge pseudo-random algoritmer i den tro at de er gode nok til at afgøre lotterier og lign.

Men det overrasker mig meget at Danske Spil, hvor der trodsalt er store penge på spil, ikke benytter sig af mere ægte random data - såsom atmosfærisk støj, gamma-stråling eller lign.

Det er ganske enkelt på amatørniveau.

Alex Jørgensen

Det gør de jo netop til at afgøre lotteriet, pseudo-random bliver brugt til at fordele nogle tal til folk som jo reelt kun behøver se tilfældige ud. De kunnne lige så godt printes startende fra 0000001, 0000002 osv. men så ville almindelig overtro garanteret få folk til at sige at deres chance virkede mindre.

Jacob Pind

Men det overrasker mig meget at Danske Spil, hvor der trodsalt er store penge på spil, ikke benytter sig af mere ægte random data - såsom atmosfærisk støj, gamma-stråling eller lign.

Det er ganske enkelt på amatørniveau.

læse nu hvad der står selve trækningen har de rigtig random data til, det her er de lotto kuponer folk køber, der er man interessert i at man ud fra seed og løbe nummer kan genskabe kupon tal .

Jacob Pind

du vil havde at de skal lave true random , gemme hvilket nummer seddler # har fået tildelt ?
Problemet var at samme seed er blev genbrugt, så vil den selvf spøjte samme data ud.
Du holder to Entropi kilder op mod hinanden, er blot den ene af dem true random, er nok.Var begger to var true random, ændre ikke på din chance.

Jacob Christian Munch-Andersen

Problemet er jo netop at psedu-generatorer ikke fordeler tallene særlig pænt, jeg synes absolut ikke det er iorden og jeg synes det er på amatør-niveau at man ikke har gennemført true random i systemet.


Pseudotilfældige algoritmer fordeler tallene så pænt som de er skrevet til, de kan fx også designes til ikke at gentage tal overhovedet, et princip som Danske Spil måske skulle overveje.

Casper Thomsen

De kunnne lige så godt printes startende fra 0000001, 0000002 (...)

Så det er uden tilbagelægning? Jeg har forsøgt at læse mig til det på danskespil.dk, men jeg er ikke blevet klogere.

De skriver bl.a.:

Tallene udvælges tilfældigt (...)

(https://danskespil.dk/lotto/joker)

Joker-tal vælges vilkårligt (...)

(https://danskespil.dk/lotto/joker/#popup/spilleregler -> Joker)

Men er det med eller uden tilbagelægning? Altså, kan flere kuponer have samme joker-tal?

Pelle Söderling

Jacob Pind: Når du bruger en pseudo-random generator, betyder det i bund og grund at du accepterer at fordelingen ikke opfylder kravene til ægte random - i praksis for Danske Spil betyder det at de sjældnere skal udbetale puljen (hvorved den bygges større) og når den bliver udbetalt skal du oftere dele præmien med andre. Det betyder mindre hvis du spiller med i hvert eneste spil - men det giver dig reelt dårligere betingelser hvis du kun spiller med i ét spil.
Det er imo grænsende til falsk varebetegnelse.

Sagt på dansk, dine vinderchancer i et spil er stadig lige store, men sandsynligheden for at du skal dele puljen med andre er ikke!

Jacob Christian Munch-Andersen: Det gør de næppe, isåfald ville der jo slet ikke kunne være flere samtidige vindere af puljen. Normalt når man vælger at basere sig på en pseudo-random algoritme betyder det somregel at man har været doven og bare bruger hvadend der nu er indbygget i det sprog man baserer sig på og ignorere evt. problemer og det lyder til at være præcis det som er tilfældet her - men derudover er det heller ikke engang iorden at fifle med en pseudo-algoritme for at give "pænere tal" når man arbejder med lotteri hvor præmisset nu engang gerne skulle være at det er tilfældighed der hersker.

Christian Wittrock

Det er for mig åbenlyst at joker-tal er med tilbagelægning, for der kan være flere vindere med 7 rigtige tal. Og der er ikke noget galt i, at en spiller får samme tal flere gange. Det er bare sandsynligheden for at det kan forekomme, som er meget lille.
Hvis de gad ofre bare lidt, så kunne de få en certificeret tilfældighedsgenerator. Alternativt kunne de trigge deres pseudo-generator fra lottosalg. Givet at mennesker på et vilkårligt tidspunkt køber en kupon, så vil disse hændelser vel være at betragte som helt ukorrolerede og i praksis rent stokastiske?

Jeg spiller fra tid til anden en kupon i Lotto, og har undret mig meget over systemets valg af tal (lyn-lotto). I 2/3 af samtlige kuponer, som jeg spillet over en periode på nogle år, indgår tallet '1'. Ser man på hvor tit der forekommer mindst et tal mellem 1 og 5, så steg forekomsten til 85%. Jeg kontaktede DanskeSpil for at spørge dem om deres tilfældighedsgenerator (ved godt at det statistisk sagtens kan forekomme at ét tal forekommer på 100 kuponer i række - og min evaluering var faktisk over 100 kuponer - men jeg blev nysgerrig efter at vide om deres tilfældighedsgenerator var lavet en uvidende person, som kunne tro på en 'random' funktion på en PC kan generere tilfældige tal ). Jeg blev afvist med et meget kort svar om at deres tilfældighedsgenerator fungerede fuldstændig som den skulle....

Jakob Møbjerg Nielsen

Det betyder mindre hvis du spiller med i hvert eneste spil - men det giver dig reelt dårligere betingelser hvis du kun spiller med i ét spil.
Det er imo grænsende til falsk varebetegnelse.

Ved lille spredning i de tildelte Jokertal, og større puljer (og længere mellem udbetalingerne) som følge heraf, bestemmer man vel nærmest selv hvordan man vil spille. Spiller man kun ugen efter en udbetaling, er man selv ude om det, givet at sammenhængen mellem puljestørrelsen og antal spillere ikke er direkte proportionel (og det er den sikkert ikke, når man tænker på 5-ugers kuponer og abonnementer i den lave ende, samt diverse mediers interesse i puljestørrelsen i den høje ende).

Jeg synes dog helt klart, at en stor spredning er at foretrække, og en maskine, der seeder samme tal indenfor 5 uger, er et problem, omend et relativt lille et af slagsen.

Jacob Christian Munch-Andersen

Fra Wikipedia:

"For such applications as cryptography, the use of pseudorandom number generators (whether hardware or software or some combination) is insecure [...] [citation needed]"

Den artikel trænger til en kærlig hånd. Uanset, kritikken er begrundet i artiklen:

all that is required in order to discover and reproduce a pseudorandom sequence is the algorithm used to generate it and the initial seed.

Og det er sådan set alt hvad man kan udsætte på en ægte kryptografisk pseudotilfældig algoritme, det brugte seed skal holdes hemmeligt og være af en karakter som ikke kan gættes. Men sådan forholder det sig jo hele vejen igennem i kryptografien, hvis ikke man kan holde på et minimum af hemmeligheder er der bare ikke rigtig noget at stille op.

En simpel og langsom men fuldt ud brugbar kryptografisk tilfældighedsgenerator kunne eksempelvis konstrueres således:

Operatøren kører musen frem og tilbage i nogle få sekunder, de registrerede skærmpositioner, samt tidspunkterne hvor disse blev registreret bliver sat sammen til en streng ala: 344,1003,1380550128778,344,1006,1380550128798 .... For hver 512 bit output der ønskes hashes strengen vha. sha512 sammen med et løbenummer, og resultatet skrives til output: sha512(løbenummer & streng)

Hash funktionen sikrer at det er umuligt at gendanne seed strengen ud fra output, uanset hvor meget af det man har til rådighed, og løbenummeret skal blot være der for at input bliver forskelligt, selv et enkelt ciffers forskel ændrer output total. Det smarte ved en sådan algoritme er at man ud fra en lille mængde tilfældig information kan skabe en arbitrært stor mængde kryptografisk brugbare tilfældige tal.

Pelle Söderling

Jacob: Medmindre Danske Spil har ansat kinesere til at sidde og rykke rundt med musen taler du vist lidt udenom nu :)

Jeg vil vitterligt gerne se en pseudoalgoritme der kan matche eller som blot er i nærheden af atmosfærisk støj eller gammastråling.

Du kan jo læse mere om nogle af de tests random.org gør brug af her til at determinere om data opfylder kriterierne til hvad vi betegner som "true random": http://www.random.org/analysis/

Jacob Christian Munch-Andersen

Jeg citerer lige mig selv:

Det smarte ved en sådan algoritme er at man ud fra en lille mængde tilfældig information kan skabe en arbitrært stor mængde kryptografisk brugbare tilfældige tal.


Du skal rykke på musen én gang, derefter kan algoritmen hvis du ønsker det køre i en million år og spytte alle de tilfældige tal ud som Danske Spil har brug for.

Jeg vil vitterligt gerne se en pseudoalgoritme der kan matche eller som blot er i nærheden af atmosfærisk støj eller gammastråling.


Jeg har netop beskrevet en. Jeg vil vitterligt gerne se en algoritme som formår at kende forskel før universets varmedød.

Pelle Söderling

Du skal rykke på musen én gang, derefter kan algoritmen hvis du ønsker det køre i en million år og spytte alle de tilfældige tal ud som Danske Spil har brug for.

Mener du det alvorligt?

Det er da en fin lille algoritme det lyder til du lige har fundet på, men hvis du ikke har matematisk bevis for dens pålidelighed så er det helt ærligt ikke ret brugbart. Du er godt klar over hvor svært det reelt er at generere random data på en computer ikke?

Kom med noget dokumentation på at den kan passe NIST tests, så kan vi tale - ellers grænser det sig ærlig talt til trolling.

Jacob Christian Munch-Andersen

Hvis du accepterer at spille Wikipedia så er der et citat her: http://en.wikipedia.org/wiki/Cryptographic_hash_function#Pseudorandom_ge...

Hash functions can also be used in the generation of pseudorandom bits, or to derive new keys or passwords from a single, secure key or password.

Hvilket er præcis hvad "min" algoritme gør. 99% af succesen må jeg dog nok tilskrive den anvendte hash algoritme, jeg har ikke gjort andet end at anvende den egenskab at det er fuldstændig umuligt at sige noget helst om noget som helst ud fra en hash værdi, ud over at man kan gætte på input værdier og beregne deres hash for at forsøge at finde input værdien.

En NIST test skal den nok klare, men det er altså ikke noget bevis for kryptografisk duelighed, det betyder blot at der ikke er nogen åbenlyse mønstre.

Og nej, når man først har skaffet et ordentligt seed er det ikke svært at generere praktisk tilfældighed på en computer, det svære er at gøre det hurtigt, hvilket er den primære grund til eksistensen af skodformler.

bo lytzen

Hvis man på online-danske spil har spillet en kupon med egne, bestemte tal + joker, får man en kupon, der kan fornyes til næste uge - inklusive jokertallene !
Disse bliver så også de samme i næste uge - dette er faktisk en af de måder, man kan opnå nogle jokertal, man " synes om" i stedet for de, man ikke bestemmer in pind over.
Forny kuponen to gange samme uge - så har du dobbelte jokertal !
(lidt tosset, men det kan gøres)

Log ind eller Opret konto for at kommentere