Atsitiktinių skaičių generatorius
Parinktys
Išvestis
Techninė informacija
Kaip veikia atsitiktinių skaičių generatorius
Ką daro įrankis
Atsitiktinių skaičių generatorius sukuria kriptografiškai stiprius atsitiktinius sveikuosius skaičius arba slankiojo kablelio skaičius naudodamas Web Crypto API (crypto.getRandomValues). Jis taiko atmetimo atranką (rejection sampling), kad pašalintų modulo šališkumą ir užtikrintų tolygų pasiskirstymą bet kuriame nurodytame intervale. Galite generuoti pavienes reikšmes arba atsitiktinių skaičių paketus su konfigūruojamais minimumo, maksimumo ir tikslumo nustatymais.
Dažniausi kūrėjų naudojimo atvejai
Kūrėjai naudoja kriptografinius atsitiktinių skaičių generatorius saugumui jautrioms užduotims, pavyzdžiui, neįspėjamų sesijos žetonų, nonce reikšmių, loterijos pasirinkimų ar atsitiktinės atrankos iš duomenų rinkinių generavimui. Žaidimų kūrėjai naudoja jį kauliukų metimams ir procedūriniam generavimui, kai svarbus sąžiningumas. QA inžinieriai generuoja atsitiktinius testinius įvesties duomenis fuzz testavimui, o duomenų mokslininkai naudoja jį atsitiktinei atrankai, kai nereikalingas atkartojamumas.
Duomenų formatai, tipai arba variantai
Įrankis palaiko sveikųjų skaičių generavimą bet kuriame intervale (imtinai su ribomis) ir slankiojo kablelio skaičių generavimą su konfigūruojamu dešimtainiu tikslumu. Atmetimo atranka atmeta reikšmes, kurios sukeltų modulo šališkumą, kai intervalas netolygiai dalija atsitiktinio šaltinio išvesties erdvę. Pagrindinė entropija gaunama iš operacinės sistemos CSPRNG (CryptGenRandom Windows sistemoje, /dev/urandom Unix sistemoje), pateikiama per naršyklės Web Crypto API.
Dažniausios klaidos ir kraštiniai atvejai
Kriptografinis atsitiktinumas yra lėtesnis nei Math.random() ir nereikalingas ne saugumo atvejams, pavyzdžiui, grojaraščio maišymui. Atmetimo atranka teoriškai gali kartotis daug kartų patologiniuose intervaluose, nors praktikoje tai nereikšminga. Naršyklėje sugeneruotų atsitiktinių skaičių negalima „seedinti“ atkartojamumui — jei testams reikia deterministinių sekų, vietoje to naudokite seedinamą PRNG. Maksimalus saugus sveikųjų skaičių intervalas ribojamas JavaScript Number.MAX_SAFE_INTEGER (2^53 - 1).
Kada naudoti šį įrankį, o kada kodą
Naudokite šį naršyklės įrankį, kai reikia greito, nešališko atsitiktinio skaičiaus vienkartiniam sprendimui, rankiniam testavimui arba patikrinti, ar jūsų įgyvendinimas grąžina reikšmes tikėtinuose intervaluose. Produkcijai naudokite crypto.getRandomValues() tiesiogiai savo kode arba kalbos gimtąsias CSPRNG funkcijas (secrets modulis Python, SecureRandom Java), kurios integruojasi su jūsų programos klaidų apdorojimu ir žurnalavimu.