Skip to main content
🟢 Beginner

Generator Angka Acak

Hasilkan angka acak dalam suatu rentang. Sempurna untuk permainan, keputusan, dan statistik. Coba kalkulator matematika online gratis ini untuk hasil instan dan akurat.

Apa itu Generator Bilangan Acak?

Generator bilangan acak (RNG) adalah alat atau algoritma yang menghasilkan bilangan tanpa pola yang dapat dilihat — setiap output statistiknya independen dari output sebelumnya, dengan setiap nilai dalam rentang sama kemungkinannya untuk muncul. Bilangan acak merupakan fondasi statistik, permainan, kriptografi, simulasi ilmiah, dan pemrograman komputer.

Keacakan yang sebenarnya berasal dari fenomena fisik yang tidak dapat diprediksi: dekomposisi radioaktif, kebisingan atmosfer, kebisingan termal dalam sirkuit elektronik, atau peristiwa tunneling kuantum. RNG hardware mengukur fenomena-fenomena tersebut untuk menghasilkan aliran bit yang benar-benar acak. Layanan seperti random.org mengumpulkan kebisingan atmosfer dari penerima radio untuk menyediakan bilangan acak yang benar.

Bilangan acak yang dihasilkan komputer secara teknis adalah pseudorandom — mereka adalah urutan deterministik yang tampak acak tetapi sepenuhnya ditentukan oleh nilai awal yang disebut biji. Dengan biji yang sama, generator bilangan acak pseudorandom (PRNG) menghasilkan urutan yang sama persis. Ini sebenarnya berguna untuk keterulangan dalam simulasi ilmiah: tetapkan biji, catatnya, dan Anda dapat mereproduksi hasilnya kemudian.

Cara Kerja Generator Bilangan Acak Pseudorandom

PRNG modern menggunakan algoritma matematika untuk menghasilkan urutan dengan sifat statistik yang sangat baik. Algoritma yang paling umum digunakan adalah Mersenne Twister (MT19937), dikembangkan oleh Matsumoto dan Nishimura pada tahun 1997. Algoritma ini memiliki periode 2^19937 − 1 (sebuah bilangan dengan hampir 6.000 digit) sebelum mengulang, melewati semua tes statistik standar untuk keacakan, dan merupakan generator bilangan acak default di Python, PHP, Ruby, R, dan banyak bahasa lainnya.

Algoritma baru termasuk xoshiro/xoroshiro (sangat cepat, kecil state) dan PCG (Permuted Congruential Generator) (kualitas statistik yang sangat baik dengan kecil state). Untuk aplikasi kriptografi, algoritma PRNG standar tidak cukup — generator bilangan acak kriptografi yang aman (CSPRNG) diperlukan karena algoritma PRNG standar dapat diprediksi jika seorang penyerang mengetahui cukup output.

Penggunaan browser menyediakan akses ke CSPRNG melalui API crypto.getRandomValues(), yang digunakan oleh kalkulator ini untuk menghasilkan bilangan acak. Ini jauh lebih aman daripada Math.random(), yang menggunakan PRNG sederhana dan tidak boleh digunakan untuk aplikasi keamanan.

AlgoritmaPeriodeKecepatanKriptografi?Digunakan di
Math.random()Tergantung pada implementasiCepatTidakJS Browser (non-kriptografi)
Mersenne Twister2^19937 − 1CepatTidakPython, R, MATLAB
xoshiro256**2^256 − 1CepatTidakRust, .NET, Julia
PCG-642^128CepatTidakNumPy, banyak bahasa
ChaCha20CepatYaLinux /dev/urandom, TLS
FortunaMenengahYamacOS, iOS, Windows

Penggunaan Umum untuk Bilangan Acak

Permainan dan Hiburan: Gulingan dadu, pengacakan kartu, penghasilan tingkat prosedural, sistem hadiah acak, dan randomisasi perilaku NPC. Seluruh pengalaman permainan roguelike (Nethack, Spelunky, Hades) bergantung pada keacakan yang berkualitas tinggi yang terasa adil namun tidak dapat diprediksi.

Lotere dan Raffle: Pengambilan acak untuk hadiah, giveaway, pengambilan juri, pilihan draft, dan alokasi sumber terbatas di antara peserta. Pengambilan acak yang sebenarnya menghindari bias.

Simulasi Ilmiah (Metode Monte Carlo): Bilangan acak menggerakkan simulasi Monte Carlo, yang menggunakan pengambilan acak berulang untuk mengestimasi hasil matematika kompleks. Aplikasi termasuk mengestimasi π, menilai derivatif keuangan, mengembangkan reaksi nuklir, memprediksi cuaca, dan studi interaksi obat.

Statistik dan Penelitian: Pengambilan acak untuk survei, pengalokasian acak dalam uji klinis (uji kontrol acak), menghasilkan sampel bootstrap untuk interval kepercayaan, dan validasi silang dalam pembelajaran mesin semua memerlukan bilangan acak.

Kriptografi dan Keamanan: Penghasilan kunci untuk enkripsi, menghasilkan token sesi, tantangan CAPTCHA, password satu kali (OTP/2FA), nilai garam untuk hashing password, dan nonce dalam protokol kriptografi semua memerlukan keacakan yang berkualitas tinggi. Keacakan yang lemah dalam aplikasi kriptografi dapat berdampak buruk — telah menyebabkan insiden keamanan nyata.

Pemrograman Komputer: Penghasilan data uji, pengujian beban, fuzzing (menemukan bug dengan memberikan input acak ke perangkat lunak), pengujian A/B, pengacakan algoritma (seperti fitur "acak" Spotify), dan pengujian simulasi.

Keadilan dan Harapan Statistik

Generator acak yang adil memberikan setiap nilai dalam rentang kemungkinan yang sama. Untuk rentang 1–6 (seperti dadu), setiap angka harus muncul sekitar 1/6 ≈ 16,67% dari waktu banyak kali. Tapi dalam jangka waktu singkat, deviasi adalah normal dan diharapkan — ini adalah apa yang kemungkinan sebenarnya mengatakan.

Hukum Besar Nomor menyatakan bahwa semakin banyak percobaan, frekuensi yang diamati konvergen ke probabilitas teoretis. Melempar dadu 12 kali dan Anda mungkin melihat {1,3,5,6,2,1,4,3,2,6,5,4} — bukan tepat 2 dari setiap angka. Melempar 60.000 kali dan Anda akan melihat sangat dekat dengan 10.000 dari setiap angka. Konvergensi ini dijamin oleh hukum, tapi pola jangka pendek tidak.

Penipuan Pemain adalah kepercayaan salah bahwa hasil lalu mempengaruhi hasil berikutnya dalam acara acak yang independen. Mendapatkan 5 kepalai berurutan tidak membuat "ekor" "wajib". Setiap lemparan adalah independen; uang koin tidak memiliki memori. Demikian pula, generator acak yang baru saja menghasilkan 7 tidak lebih tidak mungkin menghasilkan 7 lagi pada panggilan berikutnya.

RentangProbabilitas per NilaiFrekuensi yang Diharapkan (per 1000)Penggunaan Kasus Biasa
1–250%500Simulasi lemparan koin
1–616,67%167Simulasi lemparan dadu
1–1010%100Pemilihan desil
1–521,92%19Deck kartu
1–1001%10Percentil/penggunaan umum
1–1.000.0000,0001%0,001Simulasi tiket lotre

Generasi Angka Acak dalam Ilmu Pengetahuan: Metode Monte Carlo

Metode Monte Carlo menggunakan pengambilan acak untuk menyelesaikan masalah yang sulit atau tidak mungkin secara analitis. Dinamai setelah kasino Monaco (alasan yang jelas), metode ini mengubah masalah deterministik yang sulit menjadi masalah probabilitas yang dapat dipecahkan dengan simulasi.

Mengestimasi π: Buatlah titik acak secara acak dalam persegi satuan (x,y masing-masing uniform dalam [0,1]). Hitung berapa banyak yang jatuh dalam lingkaran satuan (x² + y² ≤ 1). Perbandingan adalah π/4. Dengan 1 juta titik acak, Anda dapat mengestimasi π hingga 3–4 angka desimal. Ini bukan cara yang efisien untuk menghitung π, tapi sangat menunjukkan kekuatan acak.

Modeling Keuangan: Harga Black-Scholes dan Nilai Risiko menggunakan simulasi ribuan kemungkinan harga masa depan menggunakan angka acak. Setiap jalur simulasi mewakili satu kemungkinan masa depan. Distribusi hasil di seluruh jutaan simulasi memberikan distribusi probabilitas kembali portofolio.

Perkembangan Obat: Simulasi Monte Carlo model interaksi molekul obat, memprediksi seberapa mungkin kandidat obat untuk mengikat protein target. Ini mengurangi jumlah eksperimen laboratorium yang diperlukan, menyelamatkan miliaran dolar dalam pengembangan farmasi.

Menghasilkan Angka Acak Unik (Tanpa Penggantian)

Sekaligus Anda memerlukan angka acak yang tidak berulang — misalnya, menggurat kartu, mengalokasikan partisipan ke kelompok, atau memilih pemenang lotre. Ini disebut pengambilan tanpa penggantian (berlawanan dengan pengambilan dengan penggantian, di mana nilai yang sama dapat muncul beberapa kali).

Algoritma standar untuk ini adalah Shuffle Fisher-Yates (juga dikenal sebagai Knuth shuffle). Untuk array n elemen: mulai dari elemen terakhir, tukar dengan elemen acak yang dipilih dari array seluruhnya (termasuk dirinya sendiri), kemudian pindah ke elemen kedua terakhir, tukar dengan elemen acak dari yang tersisa, dan terus. Hasilnya adalah permutasi acak yang merata dalam waktu O(n).

Untuk menghasilkan k angka acak unik dari rentang [min, max]: buat array semua nilai dalam rentang, aplikasikan Fisher-Yates, ambil elemen pertama k. Ini memastikan setiap kombinasi k nilai sama mungkin — sampel yang benar-benar merata tanpa penggantian.

Angka Acak dalam Keputusan Sehari-Hari

Generator angka acak sangat berguna untuk keputusan-keputusan sehari-hari:

Membagi Hasil: Ketika dua pilihan yang sama baiknya ada, angka acak dapat membuat keputusan tanpa berpikir terlalu lama. Penelitian menunjukkan bahwa ketika orang berpikir terlalu lama pada pilihan yang benar-benar setara, mereka memperkenalkan bias yang membuat mereka kurang bahagia dengan hasilnya daripada jika mereka telah memilih secara acak.

Pengaturan Jadwal dan Perencanaan: Jadwal rotasi acak memastikan keadilan dalam waktu. Siapa yang memilih pertama dalam draft fantasi, siapa yang mendapatkan shift yang diinginkan, topik mana yang dibahas pertama dalam pertemuan — penugasan acak menghilangkan favoritisme dan persepsi ketidakadilan.

Belajar dan Latihan: Mahasiswa yang menggunakan flashcard mendapatkan manfaat dari pengaturan acak — itu mencegah pembelajaran "petunjuk konteks" (mengetahui jawaban kartu 15 karena Anda baru saja menjawab kartu 14). Penginterleaving latihan acak adalah teknik yang terbukti (interleaved practice) yang memperkuat retensi jangka panjang dibandingkan dengan latihan terblokir.

Insiprasi Kreatif: Penulis, seniman, dan musisi menggunakan generator kata acak, generator prompt, dan alat konstrain acak untuk mengatasi blokir kreatif. Konstrain yang diberikan secara acak seringkali memaksa solusi kreatif yang tidak terduga dan menarik.

Banyak Pertanyaan yang Sering Ditanyakan

Apakah generator ini benar-benar acak?

Ini menggunakan API crypto.getRandomValues() browser Anda, yang merupakan generator bilangan acak pseudorandom yang aman kriptografis (CSPRNG). Untuk permainan, keputusan, statistik, dan undian, ini tidak dapat dibedakan dari keacakan yang sebenarnya. Untuk keacakan absolut (dari fenomena fisik), gunakan RNG perangkat keras atau layanan seperti random.org.

Apakah saya dapat menghasilkan bilangan acak tanpa ulang?

Ya — ini disebut sampling tanpa pengganti. Kalkulator menggunakan algoritma Fisher-Yates shuffle: generate semua nilai dalam rentang, kocok mereka secara acak, kembalikan nilai pertama N. Ini menjamin setiap nilai muncul tidak lebih dari sekali dan setiap kombinasi sama kemungkinannya.

Apakah kemungkinan mendapatkan bilangan yang sama dua kali?

Dengan pengganti (mode standar), untuk rentang N nilai, kemungkinan mendapatkan nilai yang sama pada dua tarikan berurutan adalah 1/N. Untuk rentang 1–100: 1% per pasang. Dalam banyak tarikan, ulang-alik diharapkan dan normal. Dengan "tidak ulang" mode, duplikat berurutan tidak mungkin oleh desain.

Apakah saya dapat menggunakan ini untuk memilih nomor lotre?

Benar-benar. Atur rentang untuk menyesuaikan dengan lotre (misalnya, 1–49) dan aktifkan "tidak ulang" untuk memilih nomor unik. Setiap kombinasi sama kemungkinannya — tidak ada nomor atau kombinasi yang lebih atau kurang mungkin untuk menang. Lotre itu sendiri acak, jadi metode pilihan apa pun sama validnya.

Apakah biji benih dalam penghasilan bilangan acak?

Biji benih adalah nilai awal untuk generator bilangan acak pseudorandom. Biji benih yang sama selalu menghasilkan urutan yang sama. Ini berguna untuk simulasi yang dapat direproduksi — tetapkan biji benih, jalankan simulasi Anda, catat biji benih, dan Anda dapat mereproduksi urutan acak yang sama kemudian untuk verifikasi atau debugging.

Bagaimana saya memilih item acak dari daftar?

Angka item Anda 1 hingga N, lalu generate bilangan acak dari 1 hingga N. Item yang sesuai adalah pilihan acak Anda. Misalnya, untuk memilih acak dari 7 anggota tim, generate bilangan acak dari 1 hingga 7. Setiap orang memiliki kemungkinan 1/7 ≈ 14,3% untuk dipilih.

Apakah Math.random() di JavaScript benar-benar acak?

Tidak. Math.random() adalah PRNG sederhana dengan tidak ada jaminan keamanan. Ini cukup untuk permainan dan aplikasi non-sensitif tetapi tidak pernah digunakan untuk tujuan kriptografis (penghasilan kunci, token, kata sandi). Untuk aplikasi keamanan, selalu gunakan crypto.getRandomValues() atau CSPRNG server-side.

Apakah perbedaan antara PRNG dan CSPRNG?

PRNG (Pseudorandom Number Generator) adalah deterministik dan cepat tetapi dapat diprediksi jika Anda tahu cukup tentang keadaan. CSPRNG (Cryptographically Secure PRNG) menambahkan sifat bahwa outputnya tidak dapat dibedakan dari keacakan yang sebenarnya bahkan jika penyerang mengamati beberapa output. CSPRNG diperlukan untuk kata sandi, kunci, dan token.

Apakah simulasi Monte Carlo?

Simulasi Monte Carlo menggunakan banyak sampel acak untuk menaksir kuantitas kompleks. Contoh: perkiraan π dengan meletakkan titik acak di dalam persegi yang mengandung lingkaran — perbandingan titik di dalam lingkaran dengan titik total konvergen ke π/4. Metode Monte Carlo digunakan dalam keuangan, fisika, teknik, dan statistik.

Apakah generator bilangan acak dapat bias?

Generator bilangan acak yang buruk dapat menunjukkan bias — beberapa nilai muncul lebih sering daripada yang lain, atau korelasi antara nilai berurutan. Kualitas diukur dengan uji statistik (NIST Test Suite, TestU01 BigCrush). Algoritma modern seperti Mersenne Twister, PCG, dan xoshiro melewati semua tes standar dan tidak bias untuk tujuan praktis.

Angka Acak dalam Permainan dan Pengembangan Prosedural

Permainan video dibangun di atas acak. Dari pengembangan tile acak di pembuatan dunia Minecraft hingga giliran musuh AI, kualitas acak yang tinggi menciptakan pengalaman yang dapat diputar ulang dan tidak dapat diprediksi. Pengembangan konten prosedural (PCG) menggunakan angka acak dengan konstrain matematika untuk menciptakan konten yang luas dengan upaya manual minimal — 18 kuintilion planet di No Man's Sky semua dihasilkan prosedural dari biji acak.

Permainan roguelike seperti Nethack, Spelunky, dan Hades mendefinisikan genre melalui pengembangan level prosedural. Setiap jalannya menghasilkan dungeon, penempatan musuh, dan distribusi item yang berbeda. Permainan biji ini acak sehingga jalannya terasa adil (RNG tidak memutuskan kematian secara acak) sementara tetap tidak dapat diprediksi. Banyak permainan roguelike menampilkan biji sehingga pemain dapat memainkan jalannya yang sama atau berbagi biji yang menarik dengan orang lain.

Permainan meja telah menggunakan acak fisik (dadu, kartu yang dicampur, spinner) selama berabad-abad. Sama seperti digital, harus meniru distribusi ini secara tepat. Roll dadu standar menggunakan distribusi uniformitas atas {1,2,3,4,5,6}. Pengundian dari deck yang dicampur menggunakan permutasi acak. Beberapa permainan menggunakan kolam dadu (roll beberapa dadu, ambil yang tertinggi) atau dadu dengan keuntungan/kerugian — memerlukan perancangan statistik yang teliti untuk mencapai distribusi probabilitas yang diinginkan.

Menghasilkan Distribusi Lain dari Angka Acak Uniform

Sebagian besar RNG menghasilkan angka yang terdistribusi uniformitas antara 0 dan 1 (atau integer dalam rentang). Kita sering memerlukan angka acak yang mengikuti distribusi lain — normal, eksponensial, Poisson, dll. Ini dapat dihasilkan dari angka acak uniform menggunakan metode transformasi.

Transformasi Box-Muller menghasilkan angka acak yang terdistribusi normal dari dua angka acak uniform U₁ dan U₂: Z₁ = √(−2ln(U₁)) × cos(2πU₂) dan Z₂ = √(−2ln(U₁)) × sin(2πU₂). Kedua Z₁ dan Z₂ mengikuti distribusi normal standar N(0,1). Skala dengan Z × σ + μ untuk mendapatkan N(μ,σ²).

Metode Transformasi Invers menggunakan invers dari fungsi distribusi kumulatif (CDF). Untuk distribusi eksponensial dengan laju λ: X = −ln(1−U)/λ di mana U adalah uniform dalam [0,1]. Metode ini secara langsung mengubah variabel acak uniform menjadi variabel yang terdistribusi eksponensial. Metode ini berlaku untuk distribusi mana pun yang memiliki CDF yang dapat diinvers.

Uji Statistik untuk Acak

Bagaimana kita memastikan bahwa generator angka acak sebenarnya acak? Uji statistik mengecek apakah urutan angka menampilkan pola yang tidak mungkin dalam urutan acak yang sebenarnya. Suite Uji Statistik NIST mengandung 15 uji yang digunakan untuk mengevaluasi RNG untuk aplikasi kriptografi. Uji kunci termasuk:

Uji Frekuensi (Monobit): Mengecek bahwa 0 dan 1 terjadi dengan frekuensi yang sama dalam representasi biner dari angka yang dihasilkan. Uang koin yang biasa mendarat ke atas 60% dari waktu akan gagal uji ini.

Uji Run: Mengecek jumlah bit yang berurutan (run). Terlalu banyak run panjang dari bit yang sama menunjukkan pola yang tidak acak. Urutan acak yang sebenarnya memiliki distribusi run panjang yang dapat diprediksi.

Uji Serial: Mengecek apakah pasangan, tripl, atau kuadrupel nilai terjadi dengan frekuensi yang sama. Jika generator menghasilkan urutan 1,2,3,4,5,6,1,2,3,4,5,6... ia melewati uji frekuensi tetapi gagal uji serial — pasangan tidak acak.

Uji StatistikApa yang DidedeteksiSuite Uji NIST?
Frekuensi (Monobit)Frekuensi 0/1 yang tidak samaYa
Uji RunTerlalu banyak/few nilai yang berurutanYa
AutokorelasiNilai yang terkait dengan nilai sebelumnyaYa
Chi-SquareDistribusi yang tidak seragamYa (uji frekuensi)
Birthday SpacingSpasi yang terlalu teratur antara nilaiVia TestU01
DiehardUji pola multipleSuite terpisah

TestU01 "BigCrush" dianggap sebagai uji yang paling ketat praktis — ia menjalankan 106 uji dan menolak banyak algoritma yang melewati uji kecil. Algoritma modern seperti PCG dan xoshiro melewati BigCrush; algoritma lama seperti generator kongruen linear yang digunakan di perpustakaan C awal gagal beberapa uji dan tidak boleh digunakan untuk aplikasi kualitas.

Menggunakan Generator Angka Acak Ini

Atur nilai minimum dan maksimum untuk menentukan rentang Anda. Atur "berapa banyak" untuk menghasilkan angka-angka beberapa kali. Aktifkan opsi "tidak ada ulang" untuk menghasilkan daftar angka unik (pengambilan tanpa pengganti) — ideal untuk pilihan lotre, taruhan kartu, atau menugaskan partisipan ke kelompok tanpa ulang. Urutan yang dihasilkan menggunakan API acak kriptografi browser Anda untuk hasil yang berkualitas tinggi cocok untuk tujuan non-keamanan apa pun. Untuk penggunaan lotre, hasilkan angka yang sama dengan jumlah pilihan yang diperlukan dalam rentang lotre Anda. Untuk penggunaan raffle, tugaskan nomor-nomor berurutan ke entri dan tarik nomor yang sesuai. Hasil dihasilkan segar setiap kali Anda klik tombol — hasil sebelumnya tidak disimpan atau diikuti.