Generator angka acak untuk integer, desimal, dadu, koin, dan shuffle list. Memakai randomness kriptografi (Web Crypto).
Enam mode: integer range, decimal range, list shuffle, coin flip (weighted), dice roller (d4-d100 + custom), dan random pick. Rejection sampling untuk menghindari modulo bias.
Disklaimer: Cocok untuk kebutuhan random sehari-hari. Untuk kriptografi production gunakan library yang diaudit. .
Informasi kalkulator
๐ Cara menggunakan kalkulator ini
- Pilih mode: Integer Range, Decimal Range, List Shuffle, Coin Flip, Dice Roller, atau Random Pick.
- Untuk Integer/Decimal Range, isi batas bawah dan batas atas (inklusif untuk integer). Contoh: 1 sampai 100.
- Tentukan jumlah angka yang ingin di-generate (1-1000) dan opsi unik tanpa duplikat jika dibutuhkan.
- Untuk Dice Roller, pilih jenis dadu (d4, d6, d8, d10, d12, d20, d100) atau buat custom (misal 3d6 + 2).
- Klik Generate. Hasil dapat di-copy ke clipboard atau di-regenerate tanpa kehilangan setting.
- Tips: untuk pengundian berhadiah, simpan screenshot hasil sebagai bukti; randomness berasal dari Web Crypto API browser, bukan Math.random().
๐งฎ Cryptographic Random dengan Rejection Sampling
raw = crypto.getRandomValues(Uint32Array) ; threshold = floor(2^32 / range) * range ; if raw < threshold: hasil = min + (raw mod range)
- range = max - min + 1 (untuk integer inklusif)
- raw = 32-bit unsigned integer acak dari CSPRNG
- threshold = batas tertinggi raw yang habis dibagi range, untuk menghindari modulo bias
- Jika raw >= threshold, ambil sample baru (rejection sampling)
Web Crypto API memakai CSPRNG OS-level (getrandom di Linux, CryptGenRandom di Windows). Modulo langsung tanpa rejection sampling menyebabkan bias jika 2^32 tidak habis dibagi range.
๐ก Contoh: Generate 5 angka unik dari 1 sampai 49 untuk simulasi lotere
Diketahui:- Mode: Integer Range
- Min: 1, Max: 49
- Jumlah: 5, Unik: Ya
Langkah:- range = 49 - 1 + 1 = 49.
- threshold = floor(4294967296 / 49) * 49 = 87652393 * 49 = 4294967257.
- Ambil raw pertama, misal 1234567890; karena 1234567890 < 4294967257, diterima.
- hasil = 1 + (1234567890 mod 49) = 1 + 17 = 18.
- Ulangi sampai dapat 5 angka berbeda; jika duplikat, di-skip dan ambil sample baru.
Hasil: Contoh keluaran: 7, 18, 23, 31, 42.
โ Pertanyaan yang sering diajukan
Apa beda Math.random() dengan Web Crypto?
Math.random() memakai PRNG (xorshift atau Mersenne Twister) yang deterministik dari seed internal dan tidak cocok untuk keperluan keamanan atau audit. Web Crypto (crypto.getRandomValues) memakai CSPRNG dari OS, melewati tes statistik NIST SP 800-22 dan aman untuk lotere, undian, atau token rahasia. Kalkulator ini hanya memakai Web Crypto.
Mengapa perlu rejection sampling?
Operasi modulo langsung (raw mod range) memberikan probabilitas berbeda untuk tiap nilai jika 2^32 tidak habis dibagi range. Misal range 7: angka 0-5 muncul lebih sering daripada 6. Rejection sampling membuang sample di zona tidak rata sehingga distribusi benar-benar uniform.
Apakah hasil sama jika halaman di-refresh?
Tidak. Setiap generate menarik bytes baru dari CSPRNG OS yang state-nya terus berubah, sehingga praktis tidak mungkin reproduksi hasil yang sama. Tidak ada seed yang bisa Anda set untuk reproduktibilitas; jika butuh reproduktibilitas, simpan output.
Bisakah dipakai untuk undian berhadiah resmi?
Secara matematis randomness-nya cukup, tetapi untuk undian berhadiah komersial di Indonesia diperlukan izin penyelenggaraan undian dari Kementerian Sosial sesuai Peraturan Menteri Sosial No. 14 Tahun 2012 dan harus disaksikan notaris serta pihak Kemensos. Hasil generator ini bisa jadi salah satu bukti, bukan pengganti prosedur legal.
Berapa maksimum angka dalam satu generate?
Kalkulator membatasi 1.000 angka per panggilan untuk menjaga responsivitas UI. Untuk dataset lebih besar, lakukan generate berulang atau gunakan library di luar browser. Range integer didukung hingga Number.MAX_SAFE_INTEGER (2^53 - 1).
๐ Sumber & referensi
Terakhir diperbarui: 11 Mei 2026