Komputer tidak bisa acak: bagaimana mesin "mengocok" angka, dan kenapa satu benih menentukan segalanya
Setiap kartu digital yang dikocok dan setiap gulungan slot yang berputar sebenarnya keluar dari rumus yang sepenuhnya bisa diramalkan. Rahasianya ada pada sebuah angka awal bernama seed.
Ada satu kalimat yang membuat programmer tersenyum getir: komputer, mesin yang paling kita andalkan justru karena ia selalu mematuhi aturan, diminta melakukan satu hal yang menurut definisinya tak bisa ia lakukan — bertindak tanpa aturan. Sebuah mesin deterministik, yang keluarannya sepenuhnya ditentukan oleh masukannya, secara logika tak mampu menghasilkan angka yang benar-benar acak. Namun setiap kali sebuah aplikasi kartu “mengocok” dek atau sebuah slot memutar gulungan, ia seolah melakukannya. Bagaimana? Jawabannya adalah tiruan yang sangat meyakinkan, dan memahami cara kerja tiruan itu mengubah cara Anda melihat setiap permainan digital.
Acak yang bukan acak
Yang dipakai komputer bukan keacakan, melainkan keacakan semu — dalam bahasa teknis, pseudorandom number generator atau PRNG. Sebuah PRNG adalah rumus yang, diberi satu angka awal, menghasilkan barisan angka yang tampak tak berpola tetapi sepenuhnya ditentukan sejak awal. Ia tidak melempar dadu; ia menghitung. Setiap “angka acak” berikutnya adalah fungsi matematis dari angka sebelumnya. Dari luar barisan itu lolos hampir semua uji keacakan; dari dalam, ia serapi tabel perkalian.
Untuk melihat sifat deterministik ini telanjang, tak perlu rumus rumit. Ambil generator sederhana yang mengalikan angka, menambah konstanta, lalu mengambil sisa bagi — jenis PRNG paling tua yang disebut generator kongruen linear. Dengan bilangan modulus kecil, katakanlah 16, barisannya:
8, 11, 10, 5, 12, 15, 14, 9, 0, 3, 2, 13, 4, 7, 6, 1, 8, 11, 10, 5, ...
Perhatikan angka kesembilan belas: 8, persis seperti angka pertama. Lalu 11, 10, 5 — barisan itu mengulang dirinya. Karena hanya ada 16 kemungkinan nilai, generator ini wajib mengulang setelah paling banyak 16 langkah. Inilah wujud paling jujur dari PRNG: bukan sumber yang tak berujung, melainkan lingkaran tertutup yang, bila Anda tunggu cukup lama, kembali ke titik awal dan mengulang seluruh nasibnya.
Seed: satu angka yang memilih seluruh masa depan
Karena barisan sepenuhnya ditentukan oleh angka awal, angka awal itu — disebut seed atau benih — memegang kuasa mutlak. Benih yang sama menghasilkan barisan yang sama, persis, sampai angka terakhir. Ini bukan teori; Anda bisa mengujinya dalam dua baris. Beri dua generator benih yang identik, minta lima angka dari masing-masing:
import random
a = random.Random(42)
b = random.Random(42)
print([a.randint(1,100) for _ in range(5)]) # [82, 15, 4, 95, 36]
print([b.randint(1,100) for _ in range(5)]) # [82, 15, 4, 95, 36] — identik
Dua “pengocok” yang berdiri sendiri menghasilkan urutan yang sama sempurna, karena keduanya berangkat dari benih yang sama. Sifat inilah yang membuat simulasi ilmiah bisa dipercaya: setiap klaim numerik yang saya terbitkan dengan benih tetap bisa Anda ulang dan periksa, bukan sekadar Anda percayai. Yang jadi kelemahan bagi keacakan justru jadi kekuatan bagi keterbukaan.
Generator sungguhan yang dipakai bahasa pemrograman modern jauh lebih canggih daripada contoh modulus 16 tadi. Salah satu yang paling terkenal, Mersenne Twister — mesin di balik fungsi acak bawaan banyak bahasa — punya periode sebesar 2 pangkat 19937 dikurangi satu sebelum ia mengulang. Angka itu begitu besar sehingga, secara praktis, Anda tak akan pernah menyaksikan pengulangannya; barisannya “tak berujung” untuk semua tujuan manusiawi. Tetapi secara prinsip, ia tetaplah lingkaran — hanya lingkaran yang kelilingnya lebih panjang daripada umur alam semesta.
Ketika acak semu tak cukup
Ada tempat di mana keacakan semu dianggap terlalu berbahaya, terutama kriptografi dan permainan berhadiah uang. Kelemahannya jelas: bila seseorang bisa menebak atau merekonstruksi benih, ia bisa meramalkan seluruh barisan “acak” yang akan datang. Karena itu, untuk keperluan sensitif, orang beralih ke sumber keacakan sejati — bukan rumus, melainkan gejala fisik yang tak bisa diramalkan, seperti derau atmosfer, peluruhan radioaktif, atau kebisingan termal dalam rangkaian elektronik. Layanan seperti RANDOM.ORG, misalnya, memanen derau atmosfer untuk menghasilkan angka yang tidak berasal dari rumus mana pun.
Di industri permainan yang diatur ketat, generator angka acak wajib diuji dan disertifikasi oleh laboratorium independen justru untuk memastikan dua hal: bahwa keluarannya cukup mirip acak, dan bahwa benihnya cukup terlindungi sehingga tak bisa ditebak. Keberadaan sertifikasi ini adalah pengakuan diam-diam atas seluruh kerapuhan yang kita bahas — bahwa di jantung setiap “kocokan digital” ada rumus deterministik, dan keadilannya sepenuhnya bergantung pada seberapa baik benihnya disembunyikan dan seberapa panjang periodenya.
Ketika benih yang bocor menjadi kejahatan nyata
Bahaya “benih yang bisa ditebak” bukan sekadar teori kriptografi; ia pernah menjadi kasus pencurian yang nyata. Beberapa tahun lalu, sekelompok pelaku merekayasa cara mengalahkan mesin slot tertentu dengan mempelajari PRNG di dalamnya. Metodenya persis seperti yang diramalkan teori: mereka merekam perilaku mesin, merekonstruksi keadaan generatornya, lalu — karena barisannya deterministik — memperkirakan kapan mesin akan membayar. Seorang pemain cukup berdiri di depan mesin sambil menunggu isyarat dari ponsel yang telah menghitung momen menguntungkan, lalu menekan tombol pada saat yang tepat.
Kasus ini adalah demonstrasi lapangan dari seluruh argumen di atas. Mesin-mesin itu tidak dicurangi dan tidak rusak; ia bekerja persis seperti dirancang. Kelemahannya justru ada pada sifat paling mendasar PRNG — bahwa keluaran “acak”-nya sepenuhnya ditentukan oleh keadaan internal yang, bila cukup diamati, bisa direkonstruksi. Begitu keadaan diketahui, “keacakan” lenyap dan yang tersisa hanyalah jadwal yang bisa dibaca. Inilah sebabnya mesin dengan taruhan uang sungguhan dituntut memakai generator berkualitas kriptografis dan benih yang terus disegarkan dari sumber fisik — bukan demi terlihat acak, melainkan agar keadaan internalnya tak bisa ditebak oleh siapa pun yang cukup sabar mengamati.
Memanen keacakan dari dunia fisik
Kalau rumus tak bisa menghasilkan keacakan sejati, dari mana keacakan sejati diambil? Jawabannya: dari gejala fisik yang secara mendasar tak bisa diramalkan. Prosesor modern kini kerap menyertakan generator angka acak perangkat keras yang memanen entropi dari kebisingan termal di dalam sirkuit — fluktuasi listrik kecil yang timbul dari gerak acak elektron. Sistem operasi mengumpulkan entropi dari sumber yang lebih tak terduga lagi: jeda waktu antar ketukan papan tik, gerak tetikus, waktu kedatangan paket jaringan, derau dari sensor. Semua ini dikumpulkan ke dalam sebuah “kolam entropi” yang lalu dipakai untuk membenihi generator — sehingga benihnya sendiri berasal dari dunia fisik, bukan dari rumus lain yang bisa ditebak.
Perhatikan pembagian tugas yang cerdik di sini. Keacakan fisik lambat dan terbatas jumlahnya; keacakan semu cepat dan tak terbatas. Sistem yang baik menggabungkan keduanya: memanen sedikit entropi fisik yang sungguh tak terduga untuk membenihi PRNG berkualitas tinggi, lalu membiarkan PRNG itu memproduksi arus angka secepat yang dibutuhkan. Yang tak bisa diramalkan (benih fisik) menjaga keamanan; yang bisa dihitung (rumus PRNG) menjaga kecepatan. Kombinasi inilah yang menopang keamanan digital modern, dari enkripsi pesan sampai pengocokan kartu di permainan daring yang diatur.
Bagaimana kita tahu sebuah generator “cukup acak”
Bila keluaran PRNG hanya meniru keacakan, bagaimana orang menilai apakah tiruannya cukup baik? Lewat baterai uji statistik yang dirancang khusus untuk membongkar pola tersembunyi. Rangkaian uji semacam ini — dengan nama-nama seperti Diehard dan TestU01 — melempari keluaran generator dengan puluhan pemeriksaan: apakah tiap angka muncul sesering seharusnya, apakah ada korelasi antara angka berurutan, apakah pola tertentu berulang lebih sering dari kebetulan. Sebuah generator dianggap layak bila keluarannya lolos semua uji itu, artinya tak ada uji statistik yang bisa membedakannya dari keacakan sejati.
Penting dicatat apa yang uji ini bisa dan tidak bisa buktikan. Lolos uji berarti keluaran tampak acak secara statistik — cukup untuk simulasi ilmiah dan permainan. Tetapi ia tidak menjamin keluaran itu tak bisa diramalkan oleh seseorang yang tahu keadaan internal generator. Untuk keperluan keamanan, “tampak acak” saja tidak cukup; dibutuhkan pula jaminan bahwa keadaan internalnya tak bisa direkonstruksi. Perbedaan halus inilah yang memisahkan generator biasa dari generator berkualitas kriptografis — dan yang, ketika diabaikan, pernah membuka pintu bagi pencurian nyata seperti kasus pembobolan mesin slot yang kita bahas di atas.
Apa artinya bagi pemahaman kita
Menyadari bahwa keacakan digital adalah tiruan tidak membuatnya curang; PRNG yang bagus dengan benih yang terlindungi menghasilkan hasil yang, bagi pemain, sama tak terduganya dengan dadu sungguhan. Tetapi ia mengubah letak kepercayaan. Pada dadu fisik, Anda mempercayai geometri dan gravitasi. Pada permainan digital, Anda mempercayai kualitas rumusnya, kerahasiaan benihnya, dan kejujuran pihak yang menyertifikasinya. Keacakan tidak lagi menjadi sifat benda yang bisa Anda pegang, melainkan janji tentang perangkat lunak yang tak bisa Anda lihat.
Itulah kenapa satu angka bernama seed pantas mendapat perhatian yang jarang diberikan kepadanya. Ubah seed-nya, dan seluruh “keacakan” yang tampak liar itu berbaris ulang menjadi urutan yang sama persis, dapat diputar kembali kapan saja. Di situlah letak paradoksnya: yang terasa paling tak terduga di layar ternyata lahir dari resep yang sepenuhnya bisa ditentukan.