Hogyan válassz nyertest nyereményjátékhoz tisztességesen és dokumentáltan
A tisztességes sorsoláshoz biztonsági célra készült generátort használj, minden jelentkező azonos eséllyel induljon, és hagyd, hogy az emberek utólag ellenőrizhessék az eredményt. Az egyszerű sorsolók tisztességtelenségének legtöbbször két oka van: gyenge véletlenforrás vagy egy apró aritmetikai hiba, az úgynevezett modulo-torzítás. Mindkettő javítható. A közzétett résztvevői lista és a sorsolás rögzített felvétele a legjobb bizonyíték arra, hogy senki nem választotta ki előre a nyertest.
Véletlen választóIgazságos nyertessorsolásPróbáld ki ingyenValódi és álvéletlen
A valódi véletlenforrás kiszámíthatatlanságát egy fizikai folyamatból meríti, például elektronikus zajból. Az álvéletlen generátor egy képlet. Kiindulópontja a mag (seed), ezen determinisztikus lépéseket hajt végre, és olyan sorozatot állít elő, amely véletlennek tűnik. A sorozatot teljesen meghatározza a mag, ezért aki ismeri a magot és a képletet, minden számot előre meg tud jósolni.
A legtöbb szoftver álvéletlen generátort használ, és ez rendben van egy lejátszási lista keverésénél vagy egy játékpálya véletlenszerű generálásánál. Olyan sorsolásnál, ahol az embereknek valami nyeremény a tét, az a kérdés, hogy valaki meg tudja-e jósolni vagy befolyásolni a kimenetet. Egy gyors, de kiszámítható generátor ilyenkor rossz eszköz.
Használd a böngésző kriptográfiai generátorát
JavaScriptben a Math.random() gyors álvéletlen generátor. A dokumentációja szerint nem alkalmas kriptográfiai célra, a nyereményjáték pedig biztonságérzékeny döntés. A Web Crypto crypto.getRandomValues() függvénye az operációs rendszer kriptográfiai véletlenforrásából tölt fel egy tömböt értékekkel. Ezt kell használni. A véletlen választó minden választásnál ezt alkalmazza, a pénzfeldobástól a dobókockáig. Egy eszközbe, amely nem mondja meg, mit használ, nehezebb bízni, ezért a használata előtt érdeklődj.
Modulo-torzítás, egy példán
Tegyük fel, hogy a forrásod egy véletlen bájtot ad, vagyis egész számot 0 és 255 között, és három jelentkező közül kell egyet választanod. A kézenfekvő megoldás, ha a 3-mal való osztás maradékát veszed. Igazságosnak tűnik, de a 256 nem osztható el hármas csoportokra maradék nélkül.
- A 0, 3, 6 és így tovább, egészen 255-ig, maradékul 0-t ad. Ilyen szám 86 van.
- A maradék 1-et adó értékek száma 85, a maradék 2-t adóké szintén 85.
Így a 0-s jelentkező 256-ból 86-szor, vagyis nagyjából 33,6%-ban jön ki, míg az 1-es és 2-es 85-ször, azaz nagyjából 33,2%-ban. A különbség kicsi, de valós, és nő, ahogy a jelentkezők száma a forrás tartományához képest nagyra nő.
A megoldás az elutasításos mintavétel (rejection sampling). Húzz egy értéket, és ha az egyenetlen maradék részbe esik, húzz újra. A bájtos példában a 255-öt elutasítod, és csak a 0–254 közötti értékeket fogadod el, amelyek hárommal maradék nélkül oszthatók. 32 bites véletlen számnál az egyenetlen maradék nagyjából négymilliárd értékből egy, így a torzítás egy nyereményjátéknál elhanyagolható. Egy gondos sorsoló mégis kezeli, mert ugyanez a hiba a tartomány zsugorodásával egyre rosszabb lesz.
Sorsolás ismétlés nélkül
Ha több nyertesre van szükséged, a véletlen index háromszori húzása ugyanazt a jelentkezőt kétszer is kiválaszthatja. Két tiszta módszer kerüli el ezt:
- Minden nyertest vegyél ki a listából, majd a maradékból húzz újra.
- Keverd meg egyszer az egész listát a Fisher–Yates-módszerrel, majd a nyerteseket vedd a lista elejéről.
A Fisher–Yates a listán a végétől halad, minden pozíciót felcserél egy véletlenszerűen választott, nála nem későbbi pozícióval, és ha a véletlen választások tisztességesek, minden sorrend egyforma valószínűséggel jön létre. Rövid, jól ismert, és a résztvevőknek könnyű elmagyarázni. A választó Nyertesek eltávolítása és Ismétlés nélkül beállítása mindkét módszert lefedi.
Tedd ellenőrizhetővé a sorsolást
A tisztességes sorsolást bárki ellenőrizheti. Sorsolás előtt:
- Tedd közzé a jelentkezőket számozott listaként, a jogosultsági feltételekkel együtt.
- Tedd közzé a lista SHA-256 ujjlenyomatát. Bármely SHA-256 eszközzel elő lehet állítani, például a hash-generátorral. Az ujjlenyomat teljesen megváltozik, ha egyetlen bejegyzés is módosul, így a listát utólag nem lehet csendben átírni. Ugyanez az ellenőrzés letöltéseknél is működik; a letöltött fájl SHA-256 ellenőrző összegének ellenőrzése lépéseit bemutatja.
A sorsolás alatt és után:
- Rögzítsd a képernyőt attól a pillanattól kezdve, hogy elindítod a választót, az eredmény megjelenéséig.
- Tedd közzé a végleges listát a nyertes számmal, hogy mindenki újraszámolhassa az ujjlenyomatot, és megerősíthesse, hogy semmi nem változott.
- Írd le, hogyan választottad ki a nyertest, például: „böngészőalapú választóval, amely az operációs rendszer kriptográfiai véletlenforrását használja”.
A nyereményjátékok szabályai platformonként eltérnek, és a nyereményjátékokra vonatkozó jogi előírások attól függenek, hol élsz. Mielőtt lebonyolítasz egyet, nézd meg a platform promóciós szabályait és a helyi jogszabályokat. Ez általános útmutató, nem jogi tanács. Ha készen állsz, válassz nyertest a véletlen választóval.
Hogyan csináld a fixmintben
- Válaszd a Nevek lehetőséget, majd illeszd be a jelentkezőket a Nevek, soronként egy mezőbe.
- Állítsd a Nyertesek számát a nyeremények számára. Pipáld be a Nyertesek eltávolítása a listából opciót, hogy senki ne nyerhessen kétszer.
- Számozott sorsoláshoz válaszd a Szám lehetőséget, állítsd be a Legkisebb és Legnagyobb értéket, és pipáld be az Ismétlés nélkül opciót, ha minden szám csak egyszer nyerhet.
- Nyomd meg a Nyertesek sorsolása gombot úgy, hogy a képernyőfelvétel már az elejétől fut.
- Tedd közzé a számozott jelentkezőket, a SHA-256 ujjlenyomatot, a nyertes bejegyzést és azt, hogyan használtad a választót.
Gyors válaszok
Megfelel a Math.random() egy nyereményjátékhoz?
Játékokhoz és keverésekhez igen, de olyan sorsoláshoz nem, amelyet az emberek ellenőrizni fognak, mert a kimenete megjósolható. Kriptográfiai forrást használj.
Miért nem jó egyszerűen a véletlen szám modulo a jelentkezők száma?
Ha a tartomány nem osztható el maradék nélkül, a maradék egyenetlen lesz, így egyes jelentkezők valamivel nagyobb eséllyel nyernek. Az elutasításos mintavétel megszünteti ezt a torzítást.
Választhatok több nyertest egy sorsolásból?
Igen. Minden nyertest vedd ki a listából a következő húzás előtt, vagy keverd meg egyszer a listát, és vedd a legfelső bejegyzéseket. Mindkét esetben egy jelentkező sem nyerhet kétszer.
A Angol eredeti alapján, MI segítségével fordítva.
Hozzászólások
Még nincs hozzászólás. Legyél te az első.


