Véletlenszerű választó

Illesszen be bármilyen listát — neveket, feladatokat vagy ötleteket — és hagyja, hogy az eszköz igazságosan válasszon. Minden húzás helyileg a böngészőben fut, így adatai soha nem hagyják el eszközét.

Nyomd meg a Generálás gombot a sorsoláshoz
Az elválasztót a rendszer automatikusan észleli, de alább kiválaszthat egyet.
Speciális beállítások

Nyereményjáték győztesét sorsolná, diákot szólítana felelni, vagy eldöntené, hogy ki vigye le a szemetet? Ez az ingyenes online véletlenszerű választó igazságosan sorsol bármilyen beillesztett listából. Tegye az elemeit a „Tételek” mezőbe — soronként egyet, vagy vesszővel elválasztva —, állítsa be a kívánt mennyiséget a „Darabszám” mezőben, majd nyomja meg a „Generálás” gombot. Egy listának legalább két elemet kell tartalmaznia, és legfeljebb 1000 elemig működik, melyek mindegyike maximum 200 karakter hosszú lehet.

Minden választás közvetlenül a böngészőben történik a Web Crypto API (crypto.getRandomValues) használatával, amely kriptográfiailag erős véletlenszerű értékeket biztosít az operációs rendszere alapvető véletlenszám-generátorából. A listáját soha nem küldjük el egyetlen szerverre sem, nem naplózzuk, és mi magunk sem látjuk — ez pedig itt fontosabb, mint a legtöbb generátornál, hiszen az emberek általában ügyféllistákat, osztálynévsorokat vagy kollégák neveit illesztik be. A „Betöltés fájlból” gomb ugyanezt az ígéretet tartja meg: a böngészője magát a fájlt olvassa be, és az adatokat helyben tölti be a mezőbe, anélkül, hogy bármit is feltöltene az internetre.

A beállításokat pontosan azokra a listákra szabtuk, amelyekkel az emberek a valóságban dolgoznak. Az „Elválasztó” alapértelmezés szerint „Automatikus” állásban van, amely magától felismeri a sortöréseket és a vesszőket, így a táblázatokból, chates üzenetekből vagy dokumentumokból kimásolt lista mindenféle újraformázás nélkül azonnal használható. Zárja le a „Sortörés”, „Vessző” vagy „Szóköz” beállítások egyikére, ha az adatai többféle formátumot kevernek — és vegye figyelembe, hogy a „Szóköz” mindig tudatos választás, sosem automatikus, hiszen például a teljes nevek is tartalmaznak szóközöket, így az automatikus darabolásuk több listát tenne tönkre, mint amennyit megjavítana. A „Darabszám” határozza meg, hogy hány elemet húzzon ki, 1-től 100-ig. Három nyertest sorsol 200 jelentkező közül? Illessze be a résztvevőket, állítsa a „Darabszám” mezőt 3-ra, és nyomja meg a „Generálás” gombot. Két beállítás csak akkor lép érvénybe, ha a darabszám 2 vagy annál több, addig pedig szürkén inaktív marad: az „Ismétlődések nélkül”, amely eldönti, hogy egyazon elem húzható-e kétszer, valamint a „Kimeneti formátum”, amely azt szabályozza, hogyan legyenek elválasztva a kiválasztott elemek — „Soronként egy”, „Szóközzel elválasztva” vagy „Vesszővel elválasztva” formában.

A „Tételek” mezőn belüli gombsorral olyan szerkesztéseket végezhet el, amiket egyébként máshol kellene megcsinálnia. A „Betöltés fájlból” egyenesen egy egyszerű szöveges vagy CSV dokumentumból húzza be a listát. A „Keverés” összekeveri a mezőben lévő elemeket, a „Rendezés” ábécésorrendbe teszi őket a számok természetes sorrendjét követve (egy második kattintás megfordítja az irányt), a „Törlés” pedig kiüríti a mezőt. A „Töltse ki mintaadatokkal” gomb egy rövid példalistát dob be, hogy egyetlen kattintással kipróbálhassa az eszközt, míg a „Kibontás, hogy illeszkedjen a tartalomhoz” lenyitja a mezőt, hogy egy hosszú lista teljes egészében látszódjon, az „Összecsukása alapértelmezett méretre” pedig visszazárja. Az eredmény alatt található „Összes másolása” a vágólapra teszi a kiválasztott elemeket, a „Mentés fájlba” lementi őket a gépére, az „Előzmények” pedig a böngészőjében tárolja a legutóbbi 10 sorsolását, így egy korábbi eredmény csupán egy kattintásnyira van.

Hogyan is történik valójában a sorsolás? Amikor megnyomja a „Generálás” gombot, az oldal véletlenszerű értékeket kér a böngészőtől a crypto.getRandomValues használatával, és ezeket használja fel a pozíciók kiválasztására a listában, ahelyett, hogy olyan pszeudovéletlenszám-generáló JavaScript-funkcióra támaszkodna, mint a Math.random(). A nyers 32 bites érték pozícióvá alakítása az a lépés, ahol sok eszköz csendben hibázik: az érték lista hosszával vett modulójának használata egy kézenfekvő, ám torzító megközelítés. Ugyanis, hacsak a lista hossza nem osztója maradék nélkül a 2^32 értéknek, a lista elején lévő elemek valamivel gyakrabban fognak felbukkanni, mint a többiek. Ezt a hibát modulo torzításnak (modulo bias) hívják, és ez egy mérhető, nem csupán elméleti probléma. Jelen eszköz ehelyett eldob minden olyan értéket, amely meghaladja a lista hosszának legnagyobb pontos többszörösét, és újat húz — ezt a technikát elutasításos mintavételezésnek (rejection sampling) nevezik. Kerül ugyan néhány extra sorsolásba, de cserébe pontos garanciát nyújt a hozzávetőleges helyett. A listában elfoglalt pozíció semmin sem változtat: az első és az utolsó elemnek is teljesen azonos esélye van minden egyes húzásnál.

Az „Ismétlődések nélkül” kapcsoló két gyökeresen eltérő sorsolási fajtát különít el, melyekre a statisztikának külön elnevezése van. Amikor ez be van kapcsolva, az eszköz a Fisher-Yates algoritmussal megkeveri a lista egy másolatát, és a tetejéről veszi le az elemeket — ez pontosan ugyanaz, mintha cetliket húznánk egy kalapból anélkül, hogy visszatennénk őket, így senkit sem választanak ki kétszer, és minden ekkora méretű csoport azonos eséllyel indul. Ez a visszatevés nélküli mintavétel (sampling without replacement), és pontosan ezt akarjuk a nyereményjátékok, a csapatok és a körök sorrendjének eldöntésekor. Amikor ki van kapcsolva, minden húzás a teljes listából történik, egymástól függetlenül, így ugyanaz az elem többször is felbukkanhat — ez a visszatételes mintavétel (sampling with replacement), amely akkor hasznos, ha mindenki minden körben részt vehet, például ismételt húzásoknál vagy egy gyors statisztikai mintavételnél. Egyik mód sem igazságosabb a másiknál; egyszerűen más-más kérdésekre adnak választ.

Egy igazságos sorsolásnak nem szabad igazságosnak kinéznie. Húzzon ki tízből öt nevet, és rendszeresen látni fog két olyan választást, melyek az eredeti listában egymás mellett álltak, vagy akár kétszer egymás után ugyanazt a nevet, ha az ismétlődések engedélyezve vannak — és ezek mindegyike teljesen hétköznapi. Minden egyes sorsolás független: a korábbi húzások egyáltalán semmilyen befolyással nincsenek a későbbiekre, és senkinek sem lesz soha „esedékes” a győzelem. Az ezt cáfolni próbáló ösztön a szerencsejátékos-tévedés (gambler's fallacy), és ugyanez az ösztön tesz minket borzasztóvá abban, hogy magunktól véletlenszerűen válasszunk — ha arra kérnek minket, hogy véletlenszerűen döntsünk, kerüljük az első és az utolsó elemet, kerüljük a nevek ismétlését, és sokkal egyenletesebben osztjuk el a választásainkat, mint ahogy azt a véletlen valaha is tenné. Egy olyan eredmény, ami gyanúsan rendezettnek tűnik, egy ember ujjlenyomata; az igazi véletlenszerűség csomósodásokat hoz létre.

Miért érdemes ezt a véletlenszerű választót használni?

A véletlenszerű sorsolás mindenhol felbukkan, ahol a döntésnek ki kell állnia az esetleges kérdéseket. A magyarországi tanárok kivételezés nélkül szólítják felelni a diákokat, és osztják fel az osztályt projektcsapatokra. A streamerek és marketingesek olyan közönség előtt húzzák ki a nyereményjátékok győzteseit, amelynek hinnie kell az eredményben. A menedzserek kiosztják azokat a feladatokat, amelyekre senki sem jelentkezik önként, a csapatok pedig eldöntik a demók sorrendjét, vagy azt, hogy ki legyen ügyeletben. A kutatók véletlenszerű mintát húznak a nyilvántartásokból az ellenőrzéshez. A családok lezárják a vitát arról, hogy mit nézzenek meg, egy éhes társaság pedig kiválasztja az éttermet. A közös szál az olyan választás, amit utólag bárki meg tud magyarázni: a húzás kriptográfiai véletlenszerűséget használ, teljes egészében az eszközén történik, az „Előzmények” pedig megőrzi az eredményt, ha valaki később rákérdezne.

Ennek az eszköznek van néhány őszinte korlátja, amit érdemes ismerni. Nem tud több egyedi elemet kihúzni, mint amennyit a lista tartalmaz — három nyerteshez legalább három névre van szükség —, és legfeljebb 1000, egyenként maximum 200 karakteres elemnél áll meg, egy sorsoláson belül pedig legfeljebb 100 választást enged. A „Keverés” és a „Rendezés” soronként működik, így az egyetlen sorba beillesztett, vesszővel elválasztott lista csak akkor lesz átrendezve, ha már soronként egy elemre lett felbontva; emellett mindkettő a mező tartalmát rendezi át, nem magát a sorsolást, amely ugyanolyan igazságos marad, függetlenül attól, hogy milyen sorrendben vannak az elemek. Alapvetően minden elem pontosan azonos súllyal bír, így egy olyan sorsolásnál, ahol egy névnek duplán kell számítania, azt a nevet kétszer kell felsorolni. Ezen korlátokon belül a garancia erős — a listában szereplő minden egyes elemnek pontosan ugyanakkora esélye van, minden egyes sorsolásnál.

FAQ

Hogyan húzzak ki egy véletlenszerű nevet a listából?

Illessze be a neveket a „Tételek” mezőbe — soronként egyet, vagy vesszőkkel, illetve szóközökkel elválasztva —, hagyja a „Darabszám” értékét 1-en, és nyomja meg a „Generálás” gombot. Egy név azonnal kiválasztásra kerül. Ha egyszerre több névre van szüksége, növelje a „Darabszám” mezőt a kívánt értékre.

Tényleg igazságos a választás?

Igen. Minden választás a böngészője Web Crypto API-ját (crypto.getRandomValues) használja az elutasításos mintavételezéssel (rejection sampling) karöltve, ami kiküszöböli a modulo torzítást, amelyet egy naiv implementáció bevonna. Minden elemnek pontosan azonos a valószínűsége, függetlenül a listában elfoglalt helyétől, és több egyedi elem kihúzása egy Fisher-Yates keverést alkalmaz, így minden ekkora méretű csoport is egyformán valószínű.

Feltöltik a listámat a szerverükre?

Nem. Az egész sorsolás helyileg, a böngészőjében fut: a lista, a húzások és az előzmények soha nem hagyják el az eszközét, így nyugodtan beilleszthet neveket, e-mail címeket vagy bármilyen privát listát. A „Betöltés fájlból” funkció is lokális — a böngészője maga olvassa be a fájlt, és semmit sem tölt fel.

Beilleszthetek vesszővel vagy szóközzel elválasztott listát a soronkénti egy elem helyett?

Igen. Az „Elválasztó” alapértelmezett beállítása az „Automatikus”, amely magától megkülönbözteti a sortöréseket és a vesszőket, így a táblázatból, chates üzenetből vagy dokumentumból másolt lista egyből működni fog. A szóközzel elválasztott lista egy extra lépést igényel — állítsa az „Elválasztó” beállítást „Szóköz” értékre —, mert például a teljes nevek önmagukban is tartalmaznak szóközöket, és a rendszer sosem darabolja fel őket ezek mentén automatikusan. Rögzítse az „Elválasztó” beállítást „Sortörés” vagy „Vessző” lehetőségre, ha az adatai többféle formátumot tartalmaznak.

Mit csinál az „Ismétlődések nélkül” kapcsoló?

Ha az „Ismétlődések nélkül” be van kapcsolva, minden kihúzott elem más és más — mintha cetliket húznánk egy kalapból anélkül, hogy visszatennénk őket, és pontosan ez a megfelelő nyereményjátékokhoz vagy csapatok beosztásához. Ha ki van kapcsolva, ugyanaz az elem többször is kihúzható, amit a statisztikusok visszatételes mintavételnek neveznek.

Miért van az „Ismétlődések nélkül” és a „Kimeneti formátum” inaktívan kiszürkítve?

Mert mindkettő csak akkor lép érvénybe, ha egynél több elemet sorsol, ahogy a mellettük lévő tipp is mondja: „Csak akkor érvényes, ha a darabszám nagyobb, mint 1.” Növelje a „Darabszám” értékét 2-re vagy nagyobbra, és mindkettő elérhetővé válik; 1-es darabszámnál egyszerűen nincs mit ismételni és nincs mit elválasztani.

Mit csinál a „Kimeneti formátum” beállítás?

Ez határozza meg, hogyan jelenjen meg és másolható több húzás eredménye: „Soronként egy”, „Szóközzel elválasztva” egy gyors chat üzenethez, vagy „Vesszővel elválasztva” táblázatokba és scriptekbe való beillesztéshez. Ez a lehetőség akkor válik elérhetővé, ha a „Darabszám” 2 vagy annál több.

Mit csinál a „Keverés” és a „Rendezés” gomb?

A „Keverés” megváltoztatja az elemek sorrendjét a „Tételek” mezőben, a „Rendezés” pedig ábécésorrendbe teszi őket a számok természetes sorrendjét követve — egy újabb kattintás a gombra megfordítja a sorrendet. Mindkettő azt módosítja, hogyan van leírva a listája, nem pedig azt, hogyan működik a sorsolás: a választó ugyanúgy igazságos marad, függetlenül attól, hogy az elemek milyen sorrendben vannak.

Hány elemet tartalmazhat a lista, és mennyit húzhatok ki egyszerre?

A lista 2 és 1000 közötti bejegyzést tartalmazhat, egyenként legfeljebb 200 karakterrel, és egy húzás legfeljebb 100 eredményt ad. Az üres sorokat és a szélén lévő szóközöket az eszköz figyelmen kívül hagyja, így a táblázatból vagy dokumentumból beillesztett lista azonnal működni fog.

Alkalmas-e a nyereményjátékok vagy sorsolások nyerteseinek kiválasztására?

Igen, és ez az egyik leggyakoribb felhasználási mód. Illessze be a jelentkezőket, állítsa be a „Darabszám” értékét a nyeremények számára, hagyja bekapcsolva az „Ismétlődések nélkül” funkciót, hogy senki ne nyerhessen kétszer, majd nyomja meg a „Generálás” gombot. Mivel a húzás kriptográfiailag biztonságos véletlenszerűséget használ, és teljesen az Ön eszközén fut, a folyamat könnyen megmagyarázható, az „Előzmények” pedig megőrzi az eredményt, ha egy résztvevő később megkérdőjelezné.

Használhatom arra, hogy embereket csapatokra osszak?

Igen. Állítsa be a „Darabszám” értékét az első csapat méretére, majd nyomja meg a „Generálás” gombot — a kihúzott nevek alkotják az első csapatot. Törölje őket a listából, majd ismételje meg ugyanezt a következő csapatnál. Tartsa bekapcsolva az „Ismétlődések nélkül” opciót, hogy senki ne kerüljön be egyszerre két csapatba.

Miért jött ki kétszer egymás után ugyanaz a név?

Mert a független sorsolások ismétlődnek, és a véletlenszerűség pontosan így néz ki. Minden sorsolás figyelmen kívül hagy minden őt megelőző húzást, így egy tíz nevet tartalmazó listán annak, hogy kétszer egymás után ugyanaz a név jöjjön ki, mindig 1 a 10-hez az esélye — ez teljesen mindennapos dolog, nem hiba. Kapcsolja be az „Ismétlődések nélkül” lehetőséget, ha egy sorsoláson belül minden választásnak egyedinek kell lennie.

Emlékszik a választó az általam kihúzottakra, és ingyenes?

Az „Előzmények” a böngészőjében tárolja az utolsó 10 sorsolását, így visszaállíthat, lemásolhat vagy törölhet egy korábbi eredményt, és bármikor ki is törölheti az egészet. Az eszköz teljesen ingyenes, nincs regisztrációhoz kötve, és mivel semmit sem továbbít, akkor sem látnánk vagy tárolhatnánk a húzásait, ha akarnánk.