Nejaušu skaitļu ģenerators

Ģenerējiet nejaušu skaitli, sarakstu vai vairākas skaitļu kopas jebkurā diapazonā – tieši jūsu pārlūkprogrammā, izmantojot kriptogrāfiski drošu nejaušību, un rezultāti netiek nosūtīti uz serveri.

Nospiediet Ģenerēt, lai izlozētu
Opcijas

Vai jums vajadzīgs ātrs un godīgs veids, kā iegūt nejaušu skaitli? Šis bezmaksas tiešsaistes nejaušu skaitļu ģenerators izlozē vienu skaitli – vai visu skaitļu sarakstu – jebkurā jūsu izvēlētā diapazonā, sākot no vienkārša diapazona no 1 līdz 10 līdz diapazoniem, kas sniedzas miljardos. Iestatiet minimālo un maksimālo vērtību laukos „Min“ un „Maks“, izvēlieties, cik skaitļu jums nepieciešams, laukā „Skaits“, un nospiediet „Ģenerēt“. Abas robežas ir iekļautas, tāpēc diapazons no 1 līdz 10 var atgriezt gan 1, gan 10.

Katrs rezultāts tiek radīts tieši jūsu pārlūkprogrammā, izmantojot Web Crypto API (crypto.getRandomValues) – tas sniedz kriptogrāfiski drošas nejaušas vērtības no jūsu pārlūkprogrammas pamatā esošās sistēmas nejaušības. Nekas netiek nosūtīts uz serveri, jūsu rezultāti netiek saglabāti mūsu serveros, un mēs nekad neredzam jūsu skaitļus. Ģenerēšana notiek acumirklī, privāti, un turpina darboties arī lēnā savienojumā pēc lapas ielādes.

Opcijas ir izveidotas situācijām, kurās cilvēkiem tiešām nepieciešami nejauši skaitļi. Ieslēdziet „Bez atkārtojumiem“, lai neviens skaitlis neparādītos divreiz – tieši tas, kas nepieciešams izlozēm, loterijveida izlozēm vai cilvēku sadalīšanai grupās bez atkārtojumiem. Vai jums nepieciešami divdesmit uzvarētāji no 500 dalībniekiem? Iestatiet „Min“ uz 1 un „Maks“ uz 500, ieslēdziet „Bez atkārtojumiem“, iestatiet „Skaits“ uz 20 un nospiediet „Ģenerēt“. „Kārtošanas secība“ sakārto rezultātu augošā vai dilstošā secībā, un viena poga nokopē visus rezultātus. Kad pārslēdzat „Izvades formātu“ no „Jauna rinda“ uz „Atdalīti ar atstarpēm“ vai „Atdalīti ar komatiem“, parādās „Kopu skaits“: vairākas neatkarīgas izlozes vienlaikus – piemēram, divdesmit kopas pa 3 skaitļiem divdesmit izlozes kārtām – un „Atļaut dublikātus starp kopām“ nosaka, vai tas pats skaitlis var parādīties vairāk nekā vienā no tām.

Kā patiesībā tiek radīta nejaušība? Jūsu pārlūkprogramma sniedz kriptogrāfiski drošas nejaušas vērtības caur Web Crypto API, nevis caur JavaScript PRNG, piemēram, Math.random(). Kad nospiežat „Ģenerēt“, lapa pieprasa nejaušas vērtības, izmantojot crypto.getRandomValues, un izmanto tās, lai izveidotu skaitļus izvēlētajā diapazonā. Nejaušības pamatavots nāk no pārlūkprogrammas un operētājsistēmas, tāpēc lapai nav jāuztur sava sākuma vērtība (seed) vai pseidonejauša secība.

Neapstrādātas vērtības pārveidošana jūsu diapazonā ir tieši tā vieta, kur ģeneratori klusi kļūdās, un tas ir pelnījis atsevišķu rindkopu. Vērtības ņemšana pēc moduļa attiecībā pret diapazona lielumu ir acīmredzams veids – taču tas rada nobīdi: ja diapazona lielums precīzi nedalās ar 2^32, mazākie skaitļi parādās nedaudz biežāk nekā pārējie. Šo kļūdu sauc par modulo bias, un tā ir izmērāma, nevis tikai teorētiska. Šis ģenerators tā vietā atmet jebkuru vērtību, kas pārsniedz lielāko precīzo diapazona daudzkārtni, un izlozē no jauna – šo tehniku sauc par rejection sampling. Tas maksā dažas papildu izlozes, taču pretī sniedz precīzu garantiju: katram skaitlim starp „Min“ un „Maks“ ir tieši vienāda varbūtība, nevis tikai gandrīz vienāda.

Kas patiesībā padara skaitli nejaušu? Skaitlis ir pietiekami nejaušs, ja iepriekšējie rezultāti neko nepasaka par nākamo – un praksē tam ir trīs līmeņi. Parasta pseidonejauša funkcija, piemēram, Math.random(), izpilda determinētu algoritmu: ikviens, kurš zina tās iekšējo stāvokli, var atveidot visu secību, kas ir piemērota kāršu kavas sajaukšanai, taču nederīga nekam, kur rezultāts nedrīkst būt paredzams. Kriptogrāfiski drošs ģenerators (CSPRNG) – līmenis, ko izmanto šis rīks – arī ir algoritms, taču tas ir izstrādāts, lai radītu neparedzamas vērtības no droša sistēmas nejaušības avota, un veidots tā, ka tā izvades novērošana neko neatklāj par to, kas nāks tālāk. Fiziskā nejaušība, kas rodas no tādiem avotiem kā atmosfēras troksnis vai radioaktīvā sabrukšana, atšķiras no abiem šiem līmeņiem, lai gan praktiskā atšķirība izzūd, kad runa ir par skaitļa izlozēšanu no diapazona. Tieši tāpēc pārlūkprogrammas piedāvā atsevišķu kriptogrāfijas API, nevis vienkārši uzlabo Math.random(): šie divi risina dažādas problēmas, un drošs ir tikai viens no tiem, kad rezultāts kādam ir svarīgs.

Nejaušai secībai nav obligāti jāizskatās nejaušai cilvēkiem. Izlozējiet desmit skaitļus no 1 līdz 10, un jūs regulāri redzēsiet atkārtojumus, piemēram, 7, 7, 8, vai īsu virkni, kurā visi skaitļi ir lieli – un katra šāda situācija ir pilnīgi normāla. Patiesa nejaušība ir neparedzama, nevis vienmērīgi sadalīta: katra izloze ir neatkarīga, iepriekšējiem skaitļiem nav absolūti nekādas ietekmes uz nākamajiem, un nevienam skaitlim nekad nav vairāk „pienākusi kārta“ nekā citam. Instinkts, kas apgalvo pretējo, ir spēlmaņa maldi, un tas ir tas pats instinkts, kas padara cilvēkus pašus par sliktiem nejaušo skaitļu ģeneratoriem – kad mums lūdz izdomāt nejaušu secību, mēs izvairāmies no atkārtojumiem un sadalām vērtības daudz vienmērīgāk, nekā to jebkad darītu nejaušība. Rezultāts, kas izskatās aizdomīgi kārtīgs, ir cilvēka pirkstu nospiedums; patiesa nejaušība rada sakopojumus.

Kāpēc izvēlēties šo nejaušu skaitļu ģeneratoru?

Nejauši skaitļi tiek izmantoti daudz vairāk vietās, nekā lielākā daļa cilvēku iedomājas. Skolotāji izsauc skolēnus, nevienu neizceļot. Straumētāji un mārketinga speciālisti izlozē dāvanu akciju un izložu uzvarētājus auditorijas priekšā, kurai jātic rezultātam. Spēlētāji aizstāj pazaudētu kauliņu vai izlemj, kurš sāk, bet turnīros izlozē sākuma secību. Pētnieki izvēlas nejaušu izlasi, lai viņu secinājumus varētu vispārināt arī uz tiem, kas pētījumā nepiedalījās. Izstrādātāji ģenerē testa datus, inicializē simulācijas ar sākuma vērtību (seed) un izvēlas identifikatorus QA laikā. Kopīgais faktors ir nejaušs atlases process, ko var izskaidrot vēlāk: tā kā izloze izmanto kriptogrāfisku nejaušību un notiek pilnībā jūsu ierīcē, jūs varat parādīt, kā rezultāts radās, ja kāds to apšauba.

Šim ģeneratoram ir daži godīgi ierobežojumi, kurus ir vērts zināt. Režīms „Bez atkārtojumiem“ nevar izlozēt vairāk skaitļu, nekā ietver diapazons: divdesmit unikālu vērtību no 1 līdz 10 vienkārši nepastāv. Izlozes ir neatkarīgas, un iepriekšējie rezultāti neietekmē nākamos, tāpēc lapas atsvaidzināšana neatiestata nekādu ciklu – vienkārši nav tāda cikla, kurā varētu atrasties. Un, lai gan skaitļi ir kriptogrāfiski droši, izloze šeit ir godīga izvēle, nevis paredzējums: oficiālās loteriju izlozes izmanto savu fizisko vai sertificēto aprīkojumu, un tam, kas tiek aprēķināts jūsu pārlūkprogrammā, nav nekādas saistības ar tām. Šo ierobežojumu ietvaros garantija ir vēl spēcīgāka: katram skaitlim jūsu diapazonā ir tieši vienādas izredzes katrā izlozē.

FAQ

Vai nejaušība ir kriptogrāfiski droša?

Jā. Tiek izmantots jūsu pārlūkprogrammas Web Crypto API (crypto.getRandomValues), kas smeļ nejaušību no jūsu operētājsistēmas kriptogrāfiski drošā avota. Atšķirībā no vienkāršām pseidonejaušām funkcijām, tā rezultāts ir izstrādāts tā, lai praksē būtu neparedzams, un rejection sampling nodrošina, ka katrs skaitlis diapazonā ir vienādi ticams, nevis dod priekšroku mazākajām vērtībām.

Kā ģenerēt nejaušu skaitli konkrētā diapazonā?

Ievadiet mazāko iespējamo vērtību laukā „Min“ un lielāko laukā „Maks“, pēc tam nospiediet „Ģenerēt“. Abas robežas ir iekļautas rezultātā, tāpēc diapazons no 1 līdz 10 var dot gan 1, gan 10.

Vai varu vienlaikus ģenerēt vairākus nejaušus skaitļus?

Jā. Iestatiet lauku „Skaits“ uz nepieciešamo daudzumu (līdz 1000), un ģenerators izveidos visu sarakstu ar vienu klikšķi. Pēc tam varat nokopēt visus rezultātus starpliktuvē ar kopēšanas pogu vai saglabāt tos failā.

Vai varu vienlaikus ģenerēt vairākas skaitļu kopas?

Jā. Pārslēdziet „Izvades formātu“ no „Jauna rinda“ uz „Atdalīti ar atstarpēm“ vai „Atdalīti ar komatiem“, lai parādītos lauks „Kopu skaits“. Iestatiet to uz nepieciešamo neatkarīgo izložu skaitu – piemēram, divdesmit kopas pa 3 skaitļiem divdesmit izlozes kārtām – un izvēlieties, vai dublikāti var atkārtoties starp dažādām kopām.

Vai varu sakārtot ģenerētos skaitļus?

Jā. Izmantojiet opciju „Kārtošanas secība“, lai sakārtotu katru sarakstu augošā vai dilstošā secībā, vai atstājiet to uz „Nav“, lai saglabātu skaitļus tādā secībā, kādā tie tika izlozēti.

Kā izvairīties no atkārtotiem skaitļiem?

Ieslēdziet slēdzi „Bez atkārtojumiem“. Kad tas ir ieslēgts, katrs ģenerētais skaitlis sarakstā ir atšķirīgs – ideāli izlozēm, balvu izlozēm vai cilvēku sadalīšanai grupās. Ņemiet vērā, ka skaits nedrīkst pārsniegt diapazona lielumu: nav iespējams izlozēt 20 unikālus skaitļus no 1 līdz 10.

Kāpēc vienmēr atkārtojas tie paši skaitļi?

Tāpēc, ka neatkarīgas izlozes var atkārtoties, un tieši tā izskatās nejaušība. Katra izloze pilnībā ignorē visas iepriekšējās izlozes, tāpēc diapazonā no 1 līdz 10 varbūtība, ka tas pats skaitlis parādīsies divās secīgās izlozēs, ir viena desmitā daļa – tas ir normāli, nevis kļūda. Ja jums nepieciešams saraksts bez atkārtojumiem, ieslēdziet „Bez atkārtojumiem“; tas apzināti ierobežo izlozi, nevis labo kādu kļūdu.

Kāpēc nejauša secība neizskatās nejauša?

Tāpēc, ka patiesa nejaušība ir neparedzama, nevis vienmērīgi sadalīta. Cilvēki gaida, ka nejaušs rezultāts būs kārtīgi izkliedēts, tāpēc sakopojumi, atkārtojumi un īsas virknes, piemēram, 7, 7, 8, izskatās kā kļūdas, lai gan tās ir tieši tas, ko rada nejaušība. Secība, kas cilvēkam šķiet kārtīga, parasti nav bijusi nejauša.

Vai varu uzticēties pārlūkprogrammā ģenerētai nejaušībai?

Jā, ja tā nāk no Web Crypto API, kā tas ir šeit. crypto.getRandomValues sniedz kriptogrāfiski drošas nejaušas vērtības no pārlūkprogrammas sistēmas nejaušības avota, nevis no JavaScript pseidonejaušo skaitļu ģeneratora. Tieši Math.random() nevajadzētu uzticēties, kad kaut kas patiešām ir svarīgs: tā ir deterministiska un nekad nav izstrādāta kā neparedzama.

Vai nejaušus skaitļus var paredzēt vai ietekmēt?

Ne šeit. Vērtības nāk no jūsu operētājsistēmas kriptogrāfiski drošā ģeneratora, tāpēc iepriekšējie rezultāti neko neatklāj par nākamo, un izloze notiek pilnībā jūsu ierīcē – nav servera, kurā iejaukties, un nav pieprasījuma, ko kāds varētu pārtvert. Mēs arī nevaram ietekmēt jūsu rezultātus, jo mēs tos nekad neredzam.

Vai tas ir piemērots dāvanu akciju vai izložu uzvarētāju izvēlei?

Jā. Piešķiriet katram dalībniekam numuru, ģenerējiet rezultātu šajā diapazonā, un uzvar dalībnieks, kuram tas atbilst. Tā kā avots ir kriptogrāfiski drošs un izloze notiek pilnībā jūsu ierīcē, procesu ir viegli izskaidrot un dokumentēt, ja dalībnieks apšauba rezultātu. Ja izvēlaties skaitļus loterijas biļetei, rīks darbojas kā nejaušas izvēles līdzeklis, nevis kā paredzējums: oficiālās izlozes ar to nav nekādā veidā saistītas.

Vai lapas atsvaidzināšana maina nejaušību?

Nē, un tas pat nav nepieciešams. Katra izloze jau pieprasa operētājsistēmai jaunas nejaušas vērtības, tāpēc rezultāti ir neatkarīgi no tā, vai desmit reizes nospiežat „Ģenerēt“ vai atsvaidzināt lapu starp katru nospiešanu. Nav neviena cikla, kas jāpārstartē, un nav neviena stāvokļa, kas varētu novecoties – atsvaidzināšana tikai notīra ekrānā redzamos rezultātus.

Vai ģenerators ir bezmaksas, un vai jūs saglabājat manus skaitļus?

Rīks ir pilnībā bezmaksas un neprasa reģistrāciju. Visi skaitļi tiek ģenerēti lokāli jūsu pārlūkprogrammā un nekad neatstāj jūsu ierīci, tāpēc mēs nevarētu saglabāt vai redzēt jūsu rezultātus, pat ja gribētu.