Gyors és igazságos módot keres egy véletlen szám kiválasztására? Ez az ingyenes, online véletlenszám-generátor egyetlen számot sorsol ki — vagy egy egész számlistát — az Ön által választott tetszőleges tartományban, az egyszerű 1–10-es tartománytól egészen a milliárdos nagyságrendű tartományokig. Állítsa be a minimum és maximum értéket a „Min” és „Max” mezőben, válassza ki, hány számra van szüksége a „Darabszám” mezőben, majd nyomja meg a „Generálás” gombot. Mindkét határérték benne foglaltatik, tehát az 1–10 tartomány mind az 1-et, mind a 10-et visszaadhatja.
Minden eredmény közvetlenül az Ön böngészőjében jön létre a Web Crypto API (crypto.getRandomValues) segítségével — amely kriptográfiailag erős véletlen értékeket biztosít az operációs rendszer által biztosított véletlenszerűségi forrásból. Semmi nem kerül szerverre, semmit nem naplózunk, és soha nem látjuk az Ön számait. A generálás azonnali, privát, és lassú kapcsolaton is működik, miután az oldal betöltődött.
A beállítások azokra a helyzetekre készültek, amikor az embereknek ténylegesen véletlen számokra van szükségük. Kapcsolja be az „Ismétlődések nélkül” opciót, hogy egyetlen szám se forduljon elő kétszer — pontosan erre van szükség sorsolásoknál, tombolánál vagy embercsoportok ismétlés nélküli felosztásánál. Húsz nyertesre van szüksége 500 résztvevő közül? Állítsa a „Min” értéket 1-re, a „Max” értéket 500-ra, kapcsolja be az „Ismétlődések nélkül” opciót, állítsa a „Darabszám” értéket 20-ra, majd nyomja meg a „Generálás” gombot. A „Rendezési sorrend” növekvő vagy csökkenő sorrendbe rendezi az eredményt, egyetlen gomb pedig az összes eredményt kimásolja. Ha a „Kimeneti formátumot” a „Sortörésről” „Szóközzel elválasztva” vagy „Vesszővel elválasztva” értékre váltja, megjelenik a „Készletek száma”: több független sorsolás egyszerre — például húsz készlet, egyenként 3 számmal, húsz sorsolási körhöz —, a „Duplikátumok engedélyezése a készletek között” pedig eldönti, hogy ugyanaz a szám előfordulhat-e egynél több készletben.
Hogyan jön létre valójában a véletlenszerűség? Az Ön böngészője kriptográfiailag erős véletlen értékeket biztosít a Web Crypto API-n keresztül, nem pedig egy JavaScript-PRNG-en, mint amilyen a Math.random(). Amikor megnyomja a „Generálás” gombot, az oldal véletlen értékeket kér a crypto.getRandomValues segítségével, és ezekből hozza létre a számokat a kiválasztott tartományban. A véletlenszerűség forrását az operációs rendszer biztosítja, ezért az oldalnak nem kell saját seedet vagy álvéletlen sorozatot fenntartania.
A nyers érték tartományra való átalakítása pontosan az a hely, ahol a generátorok csendben elrontják a dolgot, és ez megérdemel egy önálló bekezdést. A legkézenfekvőbb módszer az érték modulo a tartomány méretét venni — ez azonban torzított: hacsak a tartomány nem osztható pontosan 2^32-vel, a legalacsonyabb számok kicsit gyakrabban fordulnak elő, mint a többi. Ezt a hibát modulo biasnak hívják, és ez mérhető, nem csupán elméleti. Ez a generátor ehelyett minden olyan értéket elvet, amely a tartomány legnagyobb pontos többszörösén túl esik, és újra sorsol — ezt a technikát rejection samplingnek hívják. Ez néhány extra sorsolásba kerül, de cserébe biztosítja, hogy a „Min” és „Max” közötti minden szám pontosan ugyanolyan valószínűséggel jelenjen meg, nem csak megközelítőleg ugyanakkorával.
Mitől lesz egy szám valóban véletlen? Egy szám akkor tekinthető kellően véletlennek, ha a korábbi eredmények megfigyelése önmagában nem teszi lehetővé a következő értékek előrejelzését — és a gyakorlatban ennek három szintje van. Egy hétköznapi álvéletlen függvény, mint a Math.random(), determinisztikus algoritmust futtat: aki ismeri a belső állapotát, az képes reprodukálni a teljes sorozatot, ami tökéletes egy diavetítés megkeveréséhez, de alkalmatlan bármihez, ahol az eredmény nem lehet előre jelezhető. Egy kriptográfiailag biztonságos generátor (CSPRNG) — az a szint, amelyet ez az eszköz használ — szintén algoritmus, de úgy tervezték, hogy kiszámíthatatlan értékeket állítson elő a rendszer biztonságos véletlenforrásából, és úgy épült fel, hogy a kimenetének megfigyelése önmagában nem teszi lehetővé a következő értékek előrejelzését. A fizikai véletlenszerűség — olyan forrásokból, mint a légköri zaj vagy a radioaktív bomlás — ettől különálló szintet képvisel, bár a gyakorlati különbség eltűnik, amikor egy számot kell kisorsolni egy tartományból. Pontosan ezért kínálnak a böngészők külön kriptográfiai API-t ahelyett, hogy egyszerűen csak javítanák a Math.random()-ot: a kettő eltérő problémákat old meg, és csak az egyik biztonságos, amikor az eredmény valakinek számít.
Egy véletlen sorozatnak nem kell véletlennek tűnnie az emberek számára. Sorsoljon ki tíz számot 1 és 10 között, és rendszeresen fog látni ismétlődéseket, például a 7, 7, 8-at, vagy egy rövid sorozatot, amely teljesen magas értékekből áll — és mindegyik ilyen helyzet teljesen normális. A valódi véletlenszerűség kiszámíthatatlan, nem egyenletesen eloszló: minden sorsolás független, a korábbi számoknak semmilyen hatásuk nincs a következőkre, és egyetlen szám sem lesz soha inkább „esedékes”, mint egy másik. Az ösztön, amely az ellenkezőjét állítja, a szerencsejátékosok tévhite, és ugyanez az ösztön teszi az embereket rossz véletlenszám-generátorokká — amikor arra kérnek minket, hogy találjunk ki egy véletlen sorozatot, elkerüljük az ismétlődéseket, és sokkal egyenletesebben osztjuk el az értékeket, mint amennyire a véletlen valaha is tenné. Az eredmény, amely gyanúsan rendezettnek tűnik, egy ember ujjlenyomata; a valódi véletlenszerűség természetes csoportosulásokat eredményez.
Miért ezt a véletlenszám-generátort válassza?
- Generálás kizárólag a böngészőben: a számok az Ön eszközén jönnek létre, és sehova nem kerülnek elküldésre
- Véletlenszerűség a Web Crypto API-n keresztül: kriptográfiailag biztonságos, nem Math.random()
- Nincs modulo bias: a rejection sampling minden számot egyformán valószínűvé tesz a tartományban
- Bármilyen tartomány: 1-től 10-ig egészen a milliárdos nagyságrendű értékekig, mindkét határértékkel
- „Ismétlődések nélkül” mód: sorsoljon ki egy listát ismétlés nélkül sorsolásokhoz és csoportfelosztáshoz
- Több készlet: több független sorsolás egyetlen kattintással
- Rendezés és kimeneti formátumok: növekvő vagy csökkenő, sortörés, szóköz vagy vessző
- Előzmények és mentés fájlba: mentsen el egy sorsolást, amelynek eredményét később esetleg igazolnia kell
- Korlátlan és ingyenes: regisztráció nélkül, használati korlátok nélkül, semmi nem kerül tárolásra a szervereinken
A véletlen számok sokkal több helyen bukkannak fel, mint a legtöbben gondolnák. A tanárok úgy szólítanak fel diákokat, hogy senkit sem részesítenek előnyben. A streamerek és a marketingesek nyereményjátékok és tombolák nyerteseit sorsolják ki olyan közönség előtt, amelynek hinnie kell az eredményben. A játékosok elveszett dobókockát pótolnak, vagy eldöntik, ki kezd, a versenyeken pedig a rajtsorrendet sorsolják ki. A kutatók véletlen mintát választanak, hogy eredményeik általánosíthatók legyenek azokon túl is, akik részt vettek. A fejlesztők tesztadatokat generálnak, kezdőértékkel (seed) inicializálnak szimulációkat, és azonosítókat választanak a QA során. A közös elem egy olyan véletlen kiválasztási folyamat, amely utólag megmagyarázható: mivel a sorsolás kriptográfiai véletlenszerűséget használ, és teljes egészében az Ön eszközén zajlik, meg tudja mutatni, hogyan született az eredmény, ha valaki megkérdőjelezi.
Ennek a generátornak néhány őszinte korlátja van, amelyeket érdemes ismerni. Az „Ismétlődések nélkül” mód nem tud több számot kisorsolni, mint amennyit a tartomány tartalmaz: húsz egyedi érték 1 és 10 között egyszerűen nem létezik. A sorsolások függetlenek, és a korábbi eredmények nem befolyásolják a következőket, ezért az oldal újratöltése nem nullázza le a ciklust — nincs is olyan ciklus, amelyben benne lehetne lenni. És bár a számok kriptográfiailag erősek, egy sorsolás itt igazságos véletlen kiválasztás, nem előrejelzés: a hivatalos lottóhúzások saját fizikai vagy hitelesített berendezést használnak, és azt, amit az Ön böngészője generál, nem szabad összekeverni a hivatalos sorsolással. Ezeken a korlátokon belül minden szám az Ön tartományában pontosan ugyanolyan valószínűséggel jelenik meg minden egyes sorsolásnál.