Satunnaislukugeneraattori

Generoi satunnaisen luvun, listan tai useita lukusarjoja millä tahansa välillä – kaikki suoraan selaimessasi kryptografisesti turvallisella satunnaisuudella, ei koskaan palvelimella.

Paina Generoi
Asetukset

Tarvitsetko nopean ja reilun tavan saada satunnainen luku? Tämä ilmainen, verkossa toimiva satunnaislukugeneraattori generoi yhden luvun – tai kokonaisen listan lukuja – millä tahansa itse valitsemallasi välillä, yksinkertaisesta 1–10-välistä aina miljardien lukujen väleihin asti. Aseta pienin ja suurin arvo kohtiin ”Min” ja ”Maks”, valitse tarvitsemasi lukujen määrä kohdassa ”Määrä” ja paina ”Generoi”. Molemmat ääriarvot sisältyvät tulokseen, joten väliltä 1–10 voi saada sekä ykkösen että kymmenen.

Jokainen tulos syntyy suoraan selaimessasi Web Crypto API:n (crypto.getRandomValues) avulla – se tuottaa kryptografisesti vahvoja satunnaisarvoja käyttöjärjestelmän tarjoamasta satunnaisuuden lähteestä. Mitään ei lähetetä palvelimelle, mitään ei kirjata lokiin, emmekä koskaan näe lukujasi. Generointi tapahtuu välittömästi ja yksityisesti, ja se toimii myös hitaalla yhteydellä sen jälkeen, kun sivu on latautunut.

Asetukset on tehty niitä tilanteita varten, joissa satunnaislukuja oikeasti tarvitaan. Kytke ”Ilman kaksoiskappaleita” päälle, jotta mikään luku ei toistu – juuri se, mitä tarvitset arpajaisissa, palkintoarvonnoissa tai ryhmiin jaossa ilman toistoja. Tarvitsetko kaksikymmentä voittajaa 500 osallistujan joukosta? Aseta ”Min” arvoon 1 ja ”Maks” arvoon 500, kytke ”Ilman kaksoiskappaleita” päälle, aseta ”Määrä” arvoon 20 ja paina ”Generoi”. ”Järjestys” järjestää tuloksen nousevaan tai laskevaan järjestykseen, ja yksi painike kopioi kaikki tulokset. Kun vaihdat ”Tulostusmuodon” asetuksesta ”Rivinvaihto” asetukseen ”Välilyönnillä eroteltu” tai ”Pilkulla eroteltu”, näkyviin tulee ”Sarjojen määrä”: useita riippumattomia arvontoja kerralla – esimerkiksi kaksikymmentä kolmen luvun sarjaa kahteenkymmeneen arpajaiskierrokseen – ja ”Salli duplikaatit sarjojen välillä” päättää, saako sama luku esiintyä useammassa kuin yhdessä niistä.

Miten satunnaisuus oikeastaan syntyy? Selaimesi tuottaa kryptografisesti vahvoja satunnaisarvoja Web Crypto API:n kautta, ei JavaScript-PRNG:n kuten Math.random()-funktion kautta. Kun painat ”Generoi”, sivu pyytää satunnaisarvoja crypto.getRandomValues-funktiolla ja käyttää niitä valitsemallasi välillä olevien lukujen tuottamiseen. Selain ja käyttöjärjestelmä tuottavat satunnaisuuden taustalla, joten sivun ei tarvitse ylläpitää omaa siementä tai pseudosatunnaista jonoa.

Raa'an arvon muuntaminen valitsemallesi välille on kohta, jossa generaattorit menevät hiljaa pieleen, ja se ansaitsee oman kappaleensa. Arvon jakojäännöksen käyttäminen välin koon kanssa vaikuttaa ilmeiseltä ratkaisulta – mutta se aiheuttaa vinoumaa: ellei väli jakaudu tasan lukuun 2^32, pienimmät luvut osuvat kohdalle hieman useammin kuin muut. Tätä vinoumaa kutsutaan nimellä modulo bias, ja se on mitattavissa, ei vain teoreettinen. Tämä generaattori hylkää sen sijaan jokaisen arvon, joka ylittää välin suurimman tasan jakautuvan kerrannaisen, ja arpoo uudelleen – tekniikkaa kutsutaan nimellä rejection sampling. Se maksaa muutaman ylimääräisen arvonnan, mutta ostaa vastineeksi tarkan takuun: jokaisella ”Min”–”Maks”-välin luvulla on täsmälleen sama todennäköisyys, ei vain lähes sama.

Mikä tekee luvusta aidosti satunnaisen? Luku on tarpeeksi satunnainen silloin, kun aiemmat tulokset eivät kerro mitään seuraavasta – ja käytännössä tästä on kolme tasoa. Tavallinen pseudosatunnaisfunktio, kuten Math.random(), ajaa deterministisen algoritmin: kuka tahansa, joka tuntee sen sisäisen tilan, voi toistaa koko sarjan, mikä sopii hyvin diaesityksen sekoittamiseen mutta ei mihinkään, jossa tulosta ei saa pystyä ennustamaan. Kryptografisesti turvallinen generaattori (CSPRNG) – taso, jota tämä työkalu käyttää – on sekin algoritmi, mutta se on suunniteltu tuottamaan ennustamattomia arvoja käyttäen järjestelmän turvallista satunnaisuuden lähdettä, ja rakennettu niin, ettei sen tuotoksen seuraaminen paljasta mitään siitä, mitä on tulossa seuraavaksi. Fyysinen satunnaisuus, kuten ilmakehän kohina tai radioaktiivinen hajoaminen, on molempien yläpuolella, vaikka käytännön ero häviää, kun kyse on luvun arpomisesta väliltä. Juuri siksi selaimet tarjoavat erillisen crypto-rajapinnan sen sijaan, että ne parantaisivat Math.random()-funktiota: nämä kaksi ratkaisevat eri ongelmia, ja vain toinen niistä on turvallinen silloin, kun lopputuloksella on jollekulle merkitystä.

Satunnaisen sarjan ei ole tarkoitus näyttää satunnaiselta ihmisen silmään. Arvo kymmenen lukua väliltä 1–10, ja näet säännöllisesti toiston, lähes-parin kuten 7, 7, 8, tai lyhyen jakson, joka osuu kokonaan korkealle – ja jokainen näistä on aivan tavallista. Aito satunnaisuus on ennustamatonta, ei tasaisesti jakautunutta: jokainen arvonta on riippumaton, aiemmilla luvuilla ei ole minkäänlaista vaikutusta myöhempiin, eikä yksikään luku ole koskaan ”vuorossa”. Vaisto, joka väittää muuta, on pelaajan harha, ja se on sama vaisto, joka tekee ihmisistä huonoja satunnaislukugeneraattoreita – kun meitä pyydetään keksimään satunnainen sarja, vältämme toistoja ja levitämme arvot paljon tasaisemmin kuin sattuma koskaan tekisi. Tulos, joka näyttää epäilyttävän siistiltä, on ihmisen sormenjälki; aito satunnaisuus tuottaa kasaumia.

Miksi valita tämä satunnaislukugeneraattori?

Satunnaislukuja tarvitaan useammassa paikassa kuin useimmat arvaavat. Opettajat valitsevat oppilaita suosimatta ketään. Striimaajat ja markkinoijat arpovat arpajaisten ja kilpailujen voittajia yleisön edessä, jonka on voitava luottaa tulokseen. Pelaajat korvaavat kadonneen nopan tai ratkaisevat, kuka aloittaa, ja turnauksissa lähtöjärjestys arvotaan. Tutkijat valitsevat satunnaisotoksen, jotta tulokset yleistyvät myös niihin, jotka eivät osallistuneet. Kehittäjät generoivat testidataa, alustavat simulaatioita siemenillä ja valitsevat tunnisteita QA-vaiheessa. Yhteinen piirre on satunnainen valintaprosessi, joka voidaan selittää jälkikäteen: koska arvonta käyttää kryptografista satunnaisuutta ja tapahtuu kokonaan omalla laitteellasi, voit näyttää, miten tulos syntyi, jos joku kyseenalaistaa sen.

Tällä generaattorilla on muutama rehellinen rajoitus, jotka kannattaa tietää. Tila ”Ilman kaksoiskappaleita” ei voi arpoa enempää lukuja kuin välillä on: kaksikymmentä yksilöllistä arvoa väliltä 1–10 ei yksinkertaisesti ole olemassa. Arvonnat ovat riippumattomia, eivätkä aiemmat tulokset vaikuta myöhempiin, joten sivun päivittäminen ei nollaa mitään kiertoa – kiertoa, jossa oltaisiin, ei ole olemassakaan. Ja vaikka luvut ovat kryptografisesti vahvoja, arvonta on tässä reilu satunnaisvalinta, ei ennustus: viralliset arvonnat käyttävät omia fyysisiä tai sertifioituja laitteitaan, eikä selaimessasi lasketulla ole mitään yhteyttä niihin. Näiden rajojen sisällä takuu on sitäkin vahvempi: jokaisella luvulla välilläsi on täsmälleen sama mahdollisuus joka ikisellä arvonnalla.

FAQ

Onko satunnaisuus kryptografisesti turvallista?

Kyllä. Se käyttää selaimesi Web Crypto API:a (crypto.getRandomValues), joka hakee satunnaisuuden käyttöjärjestelmäsi kryptografisesti turvallisesta lähteestä. Toisin kuin yksinkertaiset pseudosatunnaiset funktiot, sen tuotos on suunniteltu olemaan ennustamaton käytännössä, ja rejection sampling pitää jokaisen luvun välillä yhtä todennäköisenä sen sijaan, että se suosisi pienimpiä arvoja.

Miten generoin satunnaisen luvun tietyltä väliltä?

Kirjoita pienin mahdollinen arvo kenttään ”Min” ja suurin mahdollinen kenttään ”Maks”, ja paina sitten ”Generoi”. Molemmat rajat kuuluvat mukaan tuloksiin, joten väli 1–10 voi tuottaa sekä ykkösen että kympin.

Voinko generoida useita satunnaislukuja kerralla?

Kyllä. Aseta kenttä ”Määrä” tarvitsemaasi lukumäärään (enintään 1000), niin generaattori tuottaa koko listan yhdellä klikkauksella. Voit sen jälkeen kopioida kaikki tulokset leikepöydälle kopiointipainikkeella tai tallentaa ne tiedostoon.

Voinko generoida useita lukusarjoja kerralla?

Kyllä. Vaihda ”Tulostusmuoto” asetuksesta ”Rivinvaihto” asetukseen ”Välilyönnillä eroteltu” tai ”Pilkulla eroteltu”, jolloin näkyviin tulee kenttä ”Sarjojen määrä”. Aseta se tarvitsemaasi riippumattomien arvontojen määrään – esimerkiksi kaksikymmentä kolmen luvun sarjaa kahteenkymmeneen arpajaiskierrokseen – ja valitse, saavatko kaksoiskappaleet toistua eri sarjojen välillä.

Voinko lajitella generoidut luvut?

Kyllä. Käytä asetusta ”Järjestys” järjestääksesi kunkin listan nousevaan tai laskevaan järjestykseen, tai jätä se asetukseen ”Ei mitään”, jos haluat säilyttää luvut siinä järjestyksessä, jossa ne arvottiin.

Miten vältän kaksoiskappaleet luvuissa?

Kytke ”Ilman kaksoiskappaleita” päälle. Kun se on päällä, jokainen listan luku on erilainen – ihanteellinen arpajaisiin, palkintoarvontoihin tai ryhmiin jakoon. Huomaa, että määrä ei voi ylittää välin kokoa: et voi arpoa 20:tä yksilöllistä lukua väliltä 1–10.

Miksi samat luvut toistuvat jatkuvasti?

Koska riippumattomat arvonnat voivat toistua, ja juuri siltä satunnaisuus näyttää. Jokainen arvonta ei ota huomioon mitään edellistä arvontaa, joten väliltä 1–10 todennäköisyys sille, että seuraava luku on sama kuin edellinen, on 1/10 – joka ikinen kerta – eli se on tavallista, ei rikki. Jos tarvitset listan ilman toistoja, kytke ”Ilman kaksoiskappaleita” päälle; se rajoittaa arvontaa tarkoituksella, eikä korjaa mitään vikaa.

Miksi satunnainen sarja ei näytä satunnaiselta?

Koska aito satunnaisuus on ennustamatonta, ei tasaisesti jakautunutta. Ihmiset odottavat satunnaisen tuotoksen olevan siististi levittäytynyt, joten kasaumat, toistot ja lyhyet jaksot kuten 7, 7, 8 tulkitaan virheiksi, vaikka ne ovat juuri sitä, mitä sattuma tuottaa. Sarja, joka näyttää ihmisen silmään siistiltä, ei tavallisesti ole ollut satunnainen.

Voinko luottaa selaimessa generoituun satunnaisuuteen?

Kyllä, kun se tulee Web Crypto API:sta, kuten tässä. crypto.getRandomValues tarjoaa kryptografisesti vahvoja satunnaisarvoja selaimen taustalla olevasta järjestelmäsatunnaisuudesta, ei JavaScript-pseudosatunnaisgeneraattorista. Math.random()-funktioon kannattaa suhtautua epäluuloisesti aina, kun asialla on merkitystä: se on deterministinen eikä sitä ole koskaan suunniteltu ennustamattomaksi.

Voiko satunnaislukuja ennustaa tai vaikuttaa niihin?

Ei täällä. Arvot tulevat käyttöjärjestelmäsi kryptografisesti turvallisesta generaattorista, joten aiemmat tulokset eivät paljasta mitään seuraavasta, ja arvonta tapahtuu kokonaan omalla laitteellasi – palvelinta ei ole kaapattavaksi eikä pyyntöä, jonka kukaan voisi siepata. Emme voi vaikuttaa tuloksiisi mekään, koska emme koskaan näe niitä.

Sopiiko tämä arpajaisten tai kilpailujen voittajien valintaan?

Kyllä. Anna jokaiselle osallistujalle numero, generoi tulos siltä väliltä, ja numeroa vastaava osallistuja voittaa. Koska lähde on kryptografisesti turvallinen ja arvonta tapahtuu kokonaan omalla laitteellasi, prosessi on helppo selittää ja dokumentoida, jos osallistuja kyseenalaistaa tuloksen. Jos valitset numeroita arpalippua varten, työkalu toimii satunnaisen valinnan apuvälineenä, ei ennustuksena: viralliset arvonnat ovat täysin erillisiä.

Muuttaako sivun päivittäminen satunnaisuutta?

Ei, eikä sen tarvitsekaan. Jokainen arvonta pyytää jo käyttöjärjestelmältä tuoreita satunnaisarvoja, joten tulokset ovat riippumattomia, painatpa ”Generoi”-painiketta kymmenen kertaa tai lataat sivun uudelleen joka painalluksen välissä. Kiertoa ei ole mitä uudelleenkäynnistää eikä tilaa, joka vanhenisi – päivittäminen vain tyhjentää ruudulla näkyvät tulokset.

Onko generaattori ilmainen, ja tallennatteko lukuni?

Työkalu on täysin ilmainen ilman rekisteröitymistä. Kaikki luvut generoidaan paikallisesti selaimessasi eivätkä koskaan poistu laitteeltasi, joten emme voisi tallentaa tai nähdä tuloksiasi, vaikka haluaisimmekin.