# Satunnaislukugeneraattori

> Ilmainen satunnaislukugeneraattori: turvallinen tai toistettava arvonta, kuusi jakaumaa, painot, noppanotaatio ja tilastot. 100 % selaimessasi.

URL: https://acrafto.com/fi/satunnaislukugeneraattori/  
Updated: 2026-08-28

Tools are interactive browser apps; there is no public API, no endpoints to call and no server-side processing. To use a tool, open its HTML page in a browser.

## Miten satunnaislukugeneraattori toimii?

Generaattori tarjoaa **kaksi satunnaisuuden lähdettä**, ja voit valita kumpi sopii tehtävään.

**Turvallinen satunnaisuus** hakee entropian käyttöjärjestelmästäsi Web Crypto API:n kautta (`crypto.getRandomValues()`). Se on ennustamaton ja toistumaton — oikea valinta oikeaan arvontaan, jossa kenenkään ei pidä pystyä arvaamaan lopputulosta etukäteen.

**Siemenluku (seeded)** muuttaa kirjoittamasi tekstin deterministisen generaattorin (xoshiro128\*\*) alkutilaksi. Sama siemen tuottaa aina samat luvut, joten kuka tahansa voi toistaa arvontasi ja vahvistaa, että sait sen mitä väität saaneesi.

Molemmat toimivat **kokonaan selaimessasi**. Yksikään luku ei koskaan kulkeudu palvelimelle.

### Ei modulo-vinoumaa

Useimmat yksinkertaiset generaattorit kuvaavat satunnaisen 32-bittisen arvon halutulle alueelle laskukaavalla `arvo % alue`. Kun alue ei jakaudu tasan lukuun 2³², pienimmät luvut esiintyvät hieman muita useammin. Tuhansien arvontojen yli tämä on mitattavissa.

Tämä generaattori käyttää sen sijaan **hylkäysotantaa (rejection sampling)**: epätasaiseen häntään osuvat arvot hylätään ja arvotaan uudelleen. Jokaisella alueen luvulla on täsmälleen sama todennäköisyys. Voit vahvistaa tämän itse sisäänrakennetulla tasajakaumatestillä.

## Mitä generaattori osaa

### Alue

- **Minimi ja maksimi** — mikä tahansa kokonaisluku- tai desimaalialue, negatiiviset arvot mukaan lukien
- **Lukujen määrä** — 1:stä aina **1 000 000:een** yhdellä arvonnalla
- **Ei toistoja** — jokainen luku esiintyy korkeintaan kerran, kuten oikeassa arvonnassa
- **Lajittelu** — arvontajärjestys, nouseva tai laskeva; lajittelu ei koskaan vaikuta satunnaisuuteen
- **Askel** — rajaa tulokset tietyn arvon monikertoihin, jolloin esiin tulee vain esim. 0, 5, 10, 15
- **Poissuljetut luvut** — luettele arvot, joita ei saa koskaan arpoa

### Tila

- **Satunnaisuuden lähde** — turvallinen (Web Crypto) tai siemenluku (toistettava)
- **Siemen** — mikä tahansa teksti; sama siemen toistaa aina saman arvonnan
- **Jakauma** — tasajakauma, normaali (Gaussin), eksponentiaalinen, Poisson, kolmio, binomi
- **Painot** — anna valituille luvuille suurempi todennäköisyys muodossa `luku:paino`
- **Noppanotaatio** — `3d6+2`, `d20`, `2d20kh1` etulyöntiasemaa varten, `4d6dl1` hahmon ominaisuuksien heittoon

### Tuloste

- **Erotin** — pilkku, välilyönti, puolipiste, sarkain, rivinvaihto tai mikä tahansa kirjoittamasi merkki
- **Lukujärjestelmä** — desimaali, binääri, oktaali, heksadesimaali tai kantaluku 36
- **Nollatäyttö** — muuta 7 muotoon 007 lippu- tai tunnusnumeroita varten
- **Etuliite ja jälkiliite** — kääri jokainen luku kiinteän tekstin sisään
- **Malline** — `{n}` on luku, `{i}` sen sijainti, joten `user{n}` muuttuu muotoon `user42`
- **Kopioi muodossa** — pelkkä teksti, CSV, JSON tai Markdown-taulukko

### Tilastot

Jokainen arvonta tiivistetään reaaliajassa: summa, keskiarvo, mediaani, pienin, suurin, keskihajonta sekä parillisten, parittomien ja alkulukujen määrä. Histogrammi näyttää jakauman muodon, ja **khiin neliö -testi** kertoo, vastaavatko tulokset todella tasajakaumaa.

### Historia

Selaimeesi tallentuu 50 viimeisintä arvontaa asetuksineen — yhdellä klikkauksella palautat minkä tahansa niistä. Usein käytetyt asetukset voi tallentaa nimettyinä esiasetuksina, ja koko kokoelman voi viedä JSON-tiedostoon ja tuoda toisella laitteella. Mitään ei tallenneta muualle kuin tähän selaimeen.

### Näppäimistö

Paina **välilyöntiä** tai **R**\-näppäintä arvotaksesi uudelleen ilman hiirtä.

## Pika-asetukset

| Esiasetus | Alue | Määrä | Käyttö |
| --- | --- | --- | --- |
| 🎲 Noppa | 1–6 | 1 | Lautapelit, päätöksenteko |
| 🪙 Kolikko | 0–1 | 1 | Kruuna tai klaava |
| 🎰 Lotto | 1–49 | 6 | Yksilölliset, lajitellut, kuten oikeassa arvonnassa |
| 💯 1–100 | 1–100 | 1 | Prosentit, A/B-jaot |
| 🔢 PIN | 0–9 | 4 | Neljä numeroa, toistot sallittu |

## Toistettavat arvonnat

Siemenlukutila on olemassa niitä hetkiä varten, jolloin “luota vain, se oli satunnaista” ei riitä.

Sovi siemenestä etukäteen kaikkien kesken — päivämäärä, hashtag, jonkin julkisen tiedon päätöskurssi — ja ilmoita se ennen arvontaa. Kuka tahansa voi sitten kirjoittaa saman siemenen samoilla asetuksilla ja saada identtisen tuloksen. Et ole todistanut, että luvut olivat ennustamattomia; olet todistanut, ettet arponut uudelleen kunnes tulos miellytti.

Näin tehdään satunnaisuudesta toistettavaa myös työssä, joka on tarkistettavissa: näytteenottosuunnitelma, jonka kollega voi ajaa uudelleen, testidata, joka pysyy vakaana testien ajossa, tai luokkaharjoitus, jossa jokainen oppilas saa saman “satunnaisen” datan.

## Jakauman valinta

**Tasajakauma** antaa jokaiselle alueen luvulle saman todennäköisyyden. Se on se, mitä ihmiset yleensä tarkoittavat satunnaisuudella, ja se on oletusasetus.

Muut kasaavat tuloksia tietyn arvon ympärille, mikä on tyypillistä todellisen maailman suureille:

- **Normaali (Gaussin)** — pituudet, mittausvirheet, koetulokset. Aseta keskiarvo ja keskihajonta.
- **Eksponentiaalinen** — riippumattomien tapahtumien väliset odotusajat.
- **Poisson** — tapahtumien lukumäärä kiinteällä aikavälillä: saapumiset tunnissa, viat erässä.
- **Kolmio** — kun tiedät minimin, maksimin ja todennäköisimmän arvon, mutta ei muuta. Yleinen projektiarvioissa.
- **Binomi** — onnistumiset kiinteällä koesarjan pituudella ja kiinteällä todennäköisyydellä.

Jokainen jakauma leikataan asettamallesi alueelle, joten pitkä Gaussin häntä ei voi karata minimisi ja maksimisi ulkopuolelle.

## Mihin satunnaislukuja käytetään

### Pelit ja viihde

- **Lautapelit** — noppien heittäminen, vuorojärjestys
- **Pöytäroolipelit** — `4d6dl1` ominaisuusarvoihin, `2d20kh1` etulyöntiasemaan
- **Arvonnat** — voittajan valinta, siemenellä jotta osallistujat voivat vahvistaa sen
- **Visat** — satunnainen kysymysjärjestys

### Tilastot ja tiede

- **Otanta** — näytteen arpominen populaatiosta ilman toistoja
- **A/B-testaus** — osallistujien jakaminen ryhmiin
- **Monte Carlo -simulaatio** — todennäköisyyden arviointi toistolla
- **Bootstrapping** — uudelleennäytteistys epävarmuuden arviointiin

### Kehitys

- **Testidata** — miljoona arvoa, generoituna taustalla niin että sivu pysyy responsiivisena
- **Fixturet** — siemenlukupohjaisia, joten epäonnistuva testi epäonnistuu samalla tavalla joka kerta
- **Satunnaiset ID:t** — täytöllä, etuliitteillä tai mallineella
- **Kuormitustestaus** — mallinnetut tunnisteet kuten `user{n}@example.com`

## Aidosti satunnaiset vs. näennäissatunnaiset luvut

|  | `Math.random()` | `crypto.getRandomValues()` | Siemenluku (xoshiro128\*\*) |
| --- | --- | --- | --- |
| **Tyyppi** | Näennäissatunnainen | Kryptografisesti turvallinen | Näennäissatunnainen, deterministinen |
| **Entropian lähde** | Moottorin valitsema siemen | Järjestelmän CSPRNG | Oma siementekstisi |
| **Ennustettavissa?** | Mahdollisesti | Ei | Kyllä, tarkoituksella |
| **Toistettavissa?** | Ei | Ei | Aina |
| **Sopii turvallisuuteen** | Ei | Kyllä | Ei |
| **Sopii tilastoihin** | Riippuu | Kyllä | Kyllä |
| **Sopii todennettaviin arvontoihin** | Ei | Ei | Kyllä |

`Math.random()`\-funktiota ei käytetä tässä työkalussa missään.

## Arvonnat ilman toistoja

Kun **Ei toistoja** on käytössä, jokainen alueen luku esiintyy korkeintaan kerran. Ihanteellinen:

- **Arvontoihin** — kukaan ei voi voittaa kahdesti
- **Permutaatioihin** — kohteiden sekoittamiseen
- **Bingoon** — numeroiden kutsumiseen niin, että kutsuttu pysyy kutsuttuna
- **Lottoon** — kuusi eri numeroa alueelta 1–49

Arvonta käyttää osittaista Fisher–Yates-sekoitusta, joten kuuden luvun pyytäminen miljoonasta on yhtä nopeaa kuin kuuden luvun pyytäminen 49:stä — se ei koskaan silmukoi toivoen välttävänsä törmäyksen. Jos pyydät enemmän uniikkeja lukuja kuin alue voi tarjota, generaattori kertoo sen sinulle sen sijaan että jäisi jumiin.

## Tulosten vienti

Kopioi luvut pelkkänä tekstinä millä tahansa erottimella, **CSV**\-muodossa taulukkolaskentaan, **JSON**\-muodossa koodiin tai **Markdown-taulukkona** dokumentaatioon. Hyvin suuret arvonnat pysyvät kokonaan muistissa ja kopioituvat kokonaan, vaikka näytölle piirretään vain pari ensimmäistä tuhatta.

## Satunnaislukujen generointi omassa koodissa

### JavaScript / TypeScript

```
// Cryptographically secure integer in [min, max], without modulo bias.
// The naive `value % range` favours low numbers when range does not
// divide 2**32 evenly - so we reject values in the uneven tail.
function randomInt(min, max) {
  const range = max - min + 1;
  const limit = Math.floor(0x100000000 / range) * range;
  const arr = new Uint32Array(1);
  let value;
  do {
    crypto.getRandomValues(arr);
    value = arr[0];
  } while (value >= limit);
  return min + (value % range);
}
```

### Python

```
import random
import secrets

# Cryptographically secure, no modulo bias
n = secrets.randbelow(max - min + 1) + min

# Reproducible: the same seed always gives the same sequence
rng = random.Random('my-seed')
n = rng.randint(min, max)

# Without repetition
sample = random.sample(range(min, max + 1), count)
```

### PHP

```
// Cryptographically secure (PHP 7+), no modulo bias
$n = random_int($min, $max);

// Reproducible
mt_srand(crc32('my-seed'));
$n = mt_rand($min, $max);
```

## Usein kysytyt kysymykset (FAQ)

### Ovatko tulokset todella satunnaisia?

Turvallisessa tilassa kyllä. Se perustuu funktioon `crypto.getRandomValues()`, kryptografisesti turvalliseen generaattoriin, jota ruokkii käyttöjärjestelmäsi entropiapooli. Tulokset ovat tasaisesti jakautuneita ja ennustamattomia. Siemenlukutila on tarkoituksella päinvastainen: se on toistettava, ja juuri se on sen tarkoitus.

### Kuinka monta lukua voin generoida kerralla?

Enintään 1 000 000. Yli 50 000 luvun arvonnat lasketaan taustatyössä (worker), jotta sivu pysyy responsiivisena, ja näytöllä näkyy ensimmäiset 2 000 sekä lopun määrä — kopioiminen antaa silti kaiken.

### Voinko generoida negatiivisia lukuja?

Kyllä. Aseta minimi negatiiviseksi. Koko JavaScriptin lukualue toimii, myös negatiiviset arvot molemmissa päissä.

### Vaikuttaako lajittelu satunnaisuuteen?

Ei. Luvut arvotaan ensin ja lajitellaan vasta sen jälkeen. Lajittelu muuttaa vain sitä järjestystä, jossa ne näet.

### Antaako sama siemen samat luvut huomennakin?

Kyllä, ja millä tahansa muulla laitteella tai selaimella. Siemenlukugeneraattori on täysin deterministinen ja riippuu vain siemenestäsi ja asetuksistasi.

### Mitä tasajakaumatesti kertoo minulle?

Se ajaa khiin neliö -testin, joka vertaa kunkin luvun todellista esiintymistiheyttä siihen, mitä sen pitäisi olla. Jos testisuure pysyy kriittisen arvon alapuolella, tulokset ovat yhteensopivia tasajakauman kanssa. Se vaatii kohtuullisen kapean alueen ja riittävästi arvontoja — vähintään viisi per mahdollinen arvo — jotta tuloksella olisi merkitystä.

### Miten painot toimivat?

Kirjoita ne muodossa `luku:paino`, esimerkiksi `1:5, 2:1, 3:1`. Tässä luku 1 on viisi kertaa todennäköisempi kuin 2 tai 3. Luvut, joita et luettele, saavat painon nolla eikä niitä koskaan arvota.

### Mitä noppanotaatiota tuetaan?

`3d6` heittää kolme kuusitahoista noppaa. Lisää muunnin merkinnällä `3d6+2`. Pidä tai pudota noppia merkinnöillä `kh`, `kl`, `dh`, `dl` — joten `2d20kh1` pitää kahdesta d20:sta korkeamman (etulyöntiasema) ja `4d6dl1` pudottaa neljästä d6:sta pienimmän.

### Tallennetaanko historiani jonnekin?

Vain tähän selaimeen, paikalliseen tallennustilaan (local storage). Se ei koskaan kulkeudu palvelimelle, ei synkronoidu toiselle laitteelle, ja katoaa jos tyhjennät sivuston tiedot. Vie se JSON-tiedostoon, jos haluat säilyttää tai siirtää sen.

## Other languages

- Čeština (cs): [Generátor náhodných čísel](https://acrafto.com/cs/generator-nahodnych-cisel/) ([Markdown](https://acrafto.com/cs/generator-nahodnych-cisel/index.md))
- Slovenčina (sk): [Generátor náhodných čísel](https://acrafto.com/sk/generator-nahodnych-cisel/) ([Markdown](https://acrafto.com/sk/generator-nahodnych-cisel/index.md))
- English (en): [Random Number Generator](https://acrafto.com/en/online-random-number-generator/) ([Markdown](https://acrafto.com/en/online-random-number-generator/index.md))
- Deutsch (de): [Zufallszahlen Generator](https://acrafto.com/de/zufallszahlen-generator-online/) ([Markdown](https://acrafto.com/de/zufallszahlen-generator-online/index.md))
- Français (fr): [Générateur de nombres aléatoires](https://acrafto.com/fr/generateur-nombres-aleatoires/) ([Markdown](https://acrafto.com/fr/generateur-nombres-aleatoires/index.md))
- Español (es): [Generador de números aleatorios](https://acrafto.com/es/generador-numeros-aleatorios-online/) ([Markdown](https://acrafto.com/es/generador-numeros-aleatorios-online/index.md))
- Italiano (it): [Generatore di numeri casuali](https://acrafto.com/it/generatore-numeri-casuali/) ([Markdown](https://acrafto.com/it/generatore-numeri-casuali/index.md))
- Português (pt): [Gerador de números aleatórios](https://acrafto.com/pt/gerador-numeros-aleatorios/) ([Markdown](https://acrafto.com/pt/gerador-numeros-aleatorios/index.md))
- Nederlands (nl): [Random getal generator](https://acrafto.com/nl/generator-willekeurige-getallen/) ([Markdown](https://acrafto.com/nl/generator-willekeurige-getallen/index.md))
- Polski (pl): [Generator liczb losowych](https://acrafto.com/pl/generator-liczb-losowych-online/) ([Markdown](https://acrafto.com/pl/generator-liczb-losowych-online/index.md))
- Română (ro): [Generator numere aleatoare](https://acrafto.com/ro/generator-numere-aleatoare-online/) ([Markdown](https://acrafto.com/ro/generator-numere-aleatoare-online/index.md))
- Magyar (hu): [Véletlenszám generátor](https://acrafto.com/hu/veletlen-szam-generator/) ([Markdown](https://acrafto.com/hu/veletlen-szam-generator/index.md))
- Ελληνικά (el): [Γεννήτρια τυχαίων αριθμών](https://acrafto.com/el/generator-tychaion-arithmon-online/) ([Markdown](https://acrafto.com/el/generator-tychaion-arithmon-online/index.md))
- Български (bg): [Генератор на случайни числа](https://acrafto.com/bg/generator-sluchayni-chisla/) ([Markdown](https://acrafto.com/bg/generator-sluchayni-chisla/index.md))
- Hrvatski (hr): [Generator slučajnih brojeva](https://acrafto.com/hr/generator-nasumicnih-brojeva/) ([Markdown](https://acrafto.com/hr/generator-nasumicnih-brojeva/index.md))
- Slovenščina (sl): [Generator naključnih števil](https://acrafto.com/sl/generator-nakljucnih-stevil/) ([Markdown](https://acrafto.com/sl/generator-nakljucnih-stevil/index.md))
- Eesti (et): [Juhuslike arvude generaator](https://acrafto.com/et/juhuslike-arvude-generaator/) ([Markdown](https://acrafto.com/et/juhuslike-arvude-generaator/index.md))
- Latviešu (lv): [Gadījuma skaitļu ģenerators](https://acrafto.com/lv/gadijuma-skaitlu-generators/) ([Markdown](https://acrafto.com/lv/gadijuma-skaitlu-generators/index.md))
- Lietuvių (lt): [Atsitiktinių skaičių generatorius](https://acrafto.com/lt/atsitiktiniu-skaiciu-generatorius/) ([Markdown](https://acrafto.com/lt/atsitiktiniu-skaiciu-generatorius/index.md))
- Svenska (sv): [Slumptalsgenerator](https://acrafto.com/sv/slumptalsgenerator/) ([Markdown](https://acrafto.com/sv/slumptalsgenerator/index.md))
- Dansk (da): [Tilfældighedsgenerator](https://acrafto.com/da/tilfaeldighedsgenerator-online/) ([Markdown](https://acrafto.com/da/tilfaeldighedsgenerator-online/index.md))
- Norsk (no): [Tilfeldig tallgenerator](https://acrafto.com/no/tilfeldig-tallgenerator/) ([Markdown](https://acrafto.com/no/tilfeldig-tallgenerator/index.md))
- Українська (uk): [Генератор випадкових чисел](https://acrafto.com/uk/generator-vypadkovyh-chysel/) ([Markdown](https://acrafto.com/uk/generator-vypadkovyh-chysel/index.md))
- Русский (ru): [Генератор случайных чисел](https://acrafto.com/ru/generator-sluchajnyh-chisel/) ([Markdown](https://acrafto.com/ru/generator-sluchajnyh-chisel/index.md))
- Српски (sr): [Generator nasumičnih brojeva](https://acrafto.com/sr/generator-nasumicnih-brojeva/) ([Markdown](https://acrafto.com/sr/generator-nasumicnih-brojeva/index.md))
- Македонски (mk): [Генератор на случајни броеви](https://acrafto.com/mk/generator-slucajni-broevi/) ([Markdown](https://acrafto.com/mk/generator-slucajni-broevi/index.md))
- Bosanski (bs): [Generator nasumičnih brojeva](https://acrafto.com/bs/generator-nasumicnih-brojeva/) ([Markdown](https://acrafto.com/bs/generator-nasumicnih-brojeva/index.md))
- Shqip (sq): [Gjenerator numrash të rastësishëm](https://acrafto.com/sq/gjenerator-numrash-rastesishem/) ([Markdown](https://acrafto.com/sq/gjenerator-numrash-rastesishem/index.md))
- Türkçe (tr): [Rastgele sayı üretici](https://acrafto.com/tr/rastgele-sayi-uretici/) ([Markdown](https://acrafto.com/tr/rastgele-sayi-uretici/index.md))
- 日本語 (ja): [乱数生成ツール](https://acrafto.com/ja/ransu-generator/) ([Markdown](https://acrafto.com/ja/ransu-generator/index.md))
- 한국어 (ko): [랜덤 숫자 생성기](https://acrafto.com/ko/random-number-generator/) ([Markdown](https://acrafto.com/ko/random-number-generator/index.md))
- العربية (ar): [مولد أرقام عشوائية](https://acrafto.com/ar/random-number-generator/) ([Markdown](https://acrafto.com/ar/random-number-generator/index.md))
- हिन्दी (hi): [रैंडम नंबर जनरेटर](https://acrafto.com/hi/random-number-generator/) ([Markdown](https://acrafto.com/hi/random-number-generator/index.md))
- Bahasa Indonesia (id): [Generator angka acak](https://acrafto.com/id/generator-angka-acak-online/) ([Markdown](https://acrafto.com/id/generator-angka-acak-online/index.md))
- Tiếng Việt (vi): [Tạo số ngẫu nhiên](https://acrafto.com/vi/cong-cu-tao-so-ngau-nhien/) ([Markdown](https://acrafto.com/vi/cong-cu-tao-so-ngau-nhien/index.md))
- ไทย (th): [สุ่มตัวเลข](https://acrafto.com/th/random-number-generator/) ([Markdown](https://acrafto.com/th/random-number-generator/index.md))
- עברית (he): [מחולל מספרים אקראיים](https://acrafto.com/he/random-number-generator/) ([Markdown](https://acrafto.com/he/random-number-generator/index.md))
