Pereiti prie pagrindinio turinio

Atsitiktinių skaičių generatorius nemokamai

Generuokite atsitiktinius skaičius bet kokiame diapazone, kurkite unikalius skaičių sąrašus arba meskite kauliukus. Naudoja kriptografiškai saugų atsitiktinumą.

Veikia neprisijungus, kai įkeliama

🔒 Kiekvienas skaičius naudoja kriptografiškai saugų naršyklės atsitiktinumą (crypto.getRandomValues) — tikrai teisingas, o ne nuspėjamas Math.random(). Niekas nesiunčiama. Nepaisant to, nenaudokite šių skaičių kriptografiniam raktų generavimui, saugos žetonams ar reguliuojamoms loterijos/lošimo programoms, kurioms reikalingi audituoti, aparatūroje sertifikuoti atsitiktinumo šaltiniai.

Reikia išrinkti nugalėtoją pagal vardą iš sąrašo arba mesti monetą? Naudokite monetos metimo, ratelio sukimo ir sąrašo atrinkimo įrankį →

Dažniausi naudojimo būdai

  • Sukurkite loterijos numeriusPasirinkite atsitiktines loterijos numerius„Powerball
  • Pasirinkite atsitiktinį laimėtoją dovanomsTeisėtai pasirinkite atsitiktinį laimėtoją iš numeruoto įrašų sąrašo konkursams ir dovanoms.
  • Meskite kauliukus staliniams žaidimamsMeskite bet kokią kauliukų kombinaciją — d4, d6, d8, d10, d12, d20, d100 — D&D ir staliniams RPG žaidimams.
  • Atsitiktinis imtyravimas tyrimamsSugeneruokite atsitiktines imtis, priskirkite atsitiktines ID arba pasirinkite atsitiktinį pogrupį iš numeruoto duomenų rinkinio.
  • Sugeneruokite atsitiktinių skaičių bandymų duomenimsSukurkite dideles atsitiktinių skaičių sąrašus algoritmų testavimui, duomenų bazių pildymui ir sistemos apkrovos testui.

Kaip tai veikia

Kiekvienas šio įrankio sugeneruotas skaičius gaunamas iš crypto.getRandomValues — naršyklės kriptografiškai saugaus atsitiktinumo šaltinio, to paties, naudojamo TLS rakto generavimui. Rankomis parašytas atmetimo mėginių ėmimo algoritmas šalina modulio šališkumą, kuris kamuoja paprastas Math.random() % intervalas realizacijas, įskaitant platesnius nei 2^32 intervalus per BigInt aritmetiką.

  1. 1
    Nustatykite savo intervalą ir režimą
    Rinkitės tarp vieno skaičiaus, sąrašo partijos (iki 1000) ar daugiabriaunio kauliuko (d4 iki d100). Sąrašams taip pat galite reikalauti unikalių reikšmių ir pasirinktinai rikiuoti išvestį didėjančiai.
  2. 2
    crypto.getRandomValues ištraukia neapdorotą entropiją
    Kiekvienas skaičius ištraukiamas iš Uint32Array (arba BigUint64Array platesniems nei 2^32 intervalams), užpildytos naršyklės kriptografiniu atsitiktinių skaičių generatoriumi — ne Math.random(). Atmetimo mėginių ėmimas tada atmeta reikšmes, kurios iškraipytų pasiskirstymą, todėl kiekvienas sveikasis skaičius jūsų intervale turi lygiai vienodą tikimybę.
  3. 3
    Unikalių reikšmių režimas naudoja Fisher-Yates arba atmetimo sekimą
    Kai įjungtas unikalus režimas ir intervalas tilpsta atmintyje (iki 100 000 reikšmių), įrankis sukuria pilną telkinį ir jį sumaišo Fisher-Yates metodu. Labai dideliems intervalams jis vietoj to ištraukia reikšmes po vieną, praleisdamas pasikartojimus — vengiant milijardo įrašų masyvo kūrimo atminties sąnaudų.
  4. 4
    Rezultatai pasirodo su animuotu atsiliepimu ir lieka seanso istorijoje
    Galutinės reikšmės animuotai atsiranda savo vietose (lošimo automato ritinys skaičiams, riedantys kauliukai kauliukų režimui), naudojant requestAnimationFrame, tada pasirodo slenkamame istorijos žurnale, kurį galite bet kada nukopijuoti. Niekas nepalieka jūsų naršyklės.

Susiję įrankiai

Dažnai užduodami klausimai