Skip to content

Atsitiktinių skaičių generatorius

Generuokite vieną ar daugiau atsitiktinių skaičių bet kokiame intervale. Sveikuosius ar dešimtainius, unikalius ar su pasikartojimais, su neprivaloma atkartojama sėkla.

Generatoriaus nustatymai

Atnaujinama, kol rašote
Nustatymas
Greitas startas ?
Intervalas
Mažiausia reikšmė ?
01005001000
Didžiausia reikšmė ?
01005001000
Kiekis
Kiek skaičių ?
11050100
Skaičių tipas ?
Parinktys
Pasikartojimai ?
Rūšiuoti ?
Sėkla ? Atsitiktinai
Vaizdavimas (neprivaloma)
Kopijavimo formatas

Pavyzdžiai

Kaip tai veikia

Šis generatorius naudoja naršyklės crypto.getRandomValues() API — tą patį CSPRNG (kriptografiškai saugų pseudoatsitiktinių skaičių generatorių), kuris naudojamas kriptografiniams raktams ir sesijų žetonams. Jis tinka žaidimams, simuliacijoms, imčiai ir viskam, išskyrus tiesioginę paslapčių apsaugą.

Sveikųjų skaičių generavimui naudojama atmetimo imtis, kuri pašalina modulinį iškreipimą. Naivus val % range yra šiek tiek iškreiptas, kai neapdorota atsitiktinė erdvė nėra tolygiai dalinama iš intervalo — todėl reikšmės, viršijančios didžiausią švarų intervalo kartotinį, atmetamos ir imamos iš naujo. Rezultatas: tobulai tolygus skirstinys.

Unikalus režimas naudoja dvi strategijas pagal tankį. Kai skaičius artimas intervalui (pvz., 6 iš 1–49), sudaromas visas pool'as ir atliekamas Fišerio–Jeitso maišymas. Kai intervalas daug didesnis už skaičių, traukiama toliau, praleidžiant jau matytas reikšmes. Unikalumo sąlyga reikalauja, kad sveikųjų intervale būtų bent tiek reikšmių, kiek prašai.

Neprivaloma sėkla pakeičia CSPRNG deterministiniu PRNG (mulberry32). Esant toms pačioms įvestims ir tai pačiai sėklai, seka kiekvieną kartą identiška — naudinga atkartojamoms demonstracijoms, testų duomenims ir bendrinamoms nuorodoms. Palikite sėklą tuščią tikram atsitiktinumui.

Patarimai ir geroji praktika

Naudokite sėklos lauką, kai reikia tos pačios sekos du kartus — pasidalinkite sugeneruota nuoroda, ir kiekvienas gaus tuos pačius skaičius.
Unikalus režimas reikalauja pakankamai vietos: norint ištraukti N unikalių sveikųjų, intervale turi būti bent N reikšmių.
Perjunkite į „Dešimtainiai“ ir padidinkite tikslumą, kai reikia mažesnio už vienetą žingsnio (pvz., atsitiktinėms tikimybėms ar simuliacijos įvestims).
Didesnėms imtims (100+) skirstinio histograma iš karto parodo, ar Jūsų traukinys atrodo tolygus.
Svarbus kopijavimo formatas: JSON ir CSV skirti kitiems įrankiams; kableliai ir naujos eilutės — žmonėms.

Dažniausiai užduodami klausimai

Ar tai kriptografiškai saugu?

Kai sėklos laukas tuščias — taip. Išvestis gaunama iš naršyklės crypto.getRandomValues(), kuris tinka kriptografiniam naudojimui. Jei nustatote sėklą, išvestis tampa determinuota ir NĖRA saugi: kas žino sėklą, gali atkartoti seką.

Be sėklos traukiama CSPRNG — kiekvienas metimas nepriklausomas ir neprognozuojamas. Su sėkla naudojamas deterministinis PRNG (mulberry32): ta pati sėkla ir nustatymai visada duoda tą pačią seką — to ir reikia atkartojamoms demonstracijoms, testams ar bendrinamoms nuorodoms.

Intervale yra tik 10 skirtingų sveikųjų, todėl matematiškai neįmanoma ištraukti 100 unikalių reikšmių. Arba sumažinkite skaičių iki 10 ar mažiau, arba išplėskite intervalą iki bent skaičiaus dydžio.

Ne. Rūšiavimas pertvarko jau sugeneruotus skaičius; jis nekeičia, kokie skaičiai buvo ištraukti. Atsitiktinis procesas vyksta pirmas, rūšiavimas — po to.

Iki 10 000 skaičių vienu metu. Labai didelės lentelės vaizduojamos slenkamoje srityje, o skirstinio histograma darosi prasmingesnė augant imčiai.