Dua lapisan yang sering tercampur
Lapisan pertama menghasilkan sampel angka. Lapisan kedua memutuskan hasil: misalnya sukses jika u < 0,25. Mengganti sumber angka tidak otomatis membuat aturan peluang memiliki ingatan. Sebaliknya, memakai PRD dapat mengubah peluang bersyarat tanpa mengganti sumber angkanya.
| Komponen | Peran | Batas |
|---|---|---|
| LCG dengan seed | Urutan deterministik untuk mengulang contoh | Bukan generator kriptografis |
| Math.random() | Sampel numerik dalam rentang 0 hingga kurang dari 1 | Tidak menyediakan seed yang diatur lewat API ini |
| Web Crypto | Bilangan acak yang sesuai untuk penggunaan kriptografis | Tidak otomatis menjadi sumber true random fisik |
| PRD linear | Menaikkan ambang sukses setelah gagal, reset setelah sukses | Aturan model, bukan nama generator |
PRD yang digunakan di alat ini
S(0) = 1; S(k) = ∏(1 − q(j)), j = 1…k
E[T] = Σ S(k), k ≥ 0
Peluang rata-rata jangka panjang = 1/E[T]
k dimulai dari 1 setelah keberhasilan. Konstanta C dicari secara numerik agar frekuensi teoretis rata-rata mendekati target. Untuk target 25%, C sekitar 8,4744%. Peluang awal lebih kecil daripada 25%, lalu meningkat setelah gagal. Nilai ini berasal dari model linear yang dinyatakan di sini, bukan verifikasi konstanta suatu game.
Dengan C tersebut, percobaan ke-12 setelah reset mencapai peluang 100%; maksimal ada 11 kegagalan berturut-turut dalam model ideal ini. Pada peluang tetap 25%, sepuluh kegagalan berurutan memiliki peluang 0,75¹⁰ ≈ 5,63% dari titik awal yang ditentukan.
Eksperimen yang dapat diulang
- Buka simulator PRNG dan perbandingan PRD dengan JavaScript aktif.
- Pada perbandingan PRD, pilih LCG, seed 1, peluang 25%, dan 2.000 percobaan.
- Tekan Jalankan perbandingan. Catat keberhasilan, rentetan terpanjang, dan tabel rentetan selesai.
- Jalankan ulang dengan input sama: hasil harus sama. Ubah seed untuk melihat sesi lain.
- Pilih Math.random() atau Web Crypto untuk sumber lain. Seed tidak digunakan pada kedua mode tersebut.
Jika Web Crypto tidak tersedia, alat menampilkan kesalahan. Pilih sumber lain secara manual; hasil tidak diam-diam dilabeli kriptografis ketika memakai sumber berbeda.
Membaca hasil tanpa menyimpulkan terlalu jauh
Angka yang tampil adalah hasil sesi simulasi, bukan data pemain. Jumlah keberhasilan bisa menyimpang dari n × p pada sampel terbatas. Untuk membandingkan aturan, kedua model memakai urutan u yang sama pada satu sesi.
Tabel frekuensi hanya mencatat rentetan yang berakhir dengan sukses. Rentetan gagal di ujung sesi belum lengkap, sehingga dilaporkan terpisah. Rentetan terpanjang tetap memasukkannya. Ini mencegah angka “gagal terpanjang” mengecil hanya karena sesi berhenti sebelum sukses berikutnya.
Satu grafik atau tabel yang terlihat rata tidak membuktikan keamanan, keadilan, atau kualitas statistik generator. PRD linear di sini membatasi rentetan sesuai rumusnya; tidak membuktikan bagaimana game MOBA atau RPG tertentu bekerja.
Eksperimen lokal: dua seed × 1.000 percobaan
Observasi eksekusi kode: pada 13 November 2026, RumusGame menjalankan LCG yang sama dengan mode LCG pada alat perbandingan. Parameter: state berikutnya = (state × 16807) mod 2147483647; u = (state − 1) / 2147483646; berhasil jika u < 0,25. Setiap percobaan mengambil satu angka. Ini eksperimen perangkat lunak lokal, bukan pengujian akun game.
| Seed | Percobaan | Berhasil | Proporsi akhir |
|---|---|---|---|
| 12345 | 1000 | 256 | 25,6% |
| 54321 | 1000 | 242 | 24,2% |
Cara memeriksa hasil yang sama
- Buka alat perbandingan peluang tetap dan PRD, pilih sumber LCG, peluang 25%, jumlah percobaan 1000, dan seed 12345.
- Tekan “Jalankan perbandingan”. Baca jumlah keberhasilan pada kolom peluang tetap: 256. Kolom PRD memakai aturan peluang berbeda, sehingga tidak untuk dicocokkan ke tabel ini.
- Jalankan lagi dengan input sama: hasil peluang tetap tetap 256. Ubah seed ke 54321: hasilnya 242. Jangan memakai kotak simulasi loot yang parameter dan format hasilnya berbeda.
Interpretasi: perbedaan 25,6% dan 24,2% menunjukkan bahwa proporsi sampel dapat berbeda dari ambang 25%. Dua sampel ini tidak cukup untuk menilai kualitas statistik, keamanan kriptografi, atau keadilan sebuah game. Seed sama hanya menjamin reproduksi jika algoritma, aturan konversi, parameter, dan urutan pemanggilannya sama.
Fakta dokumentasi: ECMAScript menyerahkan algoritma Math.random kepada implementasi. Karena itu, hasil LCG tidak boleh dianggap mewakili semua browser atau server game. Web Cryptography mendefinisikan nilai acak kuat secara kriptografi; nama API itu sendiri tidak membuktikan setiap angka berasal langsung dari sensor fisik.
Pertanyaan umum
Apakah CSPRNG sama dengan true random?
Tidak selalu. Dokumentasi Web Crypto menjelaskan implementasi dapat memakai PRNG kriptografis yang diberi seed dengan entropi yang sesuai. Istilah kriptografis tidak berarti tiap hasil dibaca langsung dari fenomena fisik.
Apakah PRD menghapus semua kegagalan beruntun?
Tidak. Model linear tetap memungkinkan kegagalan beruntun sampai ambangnya mencapai satu. Batasnya bergantung pada konstanta C.
Mengapa dua sesi dengan seed sama identik?
Pada mode LCG, urutan angka dan aturan perhitungannya deterministik. Seed yang sama dengan parameter lain sama menghasilkan sesi yang sama.
Kesimpulan
Bedakan sumber angka dari aturan yang mengubah angka menjadi hasil. Gunakan simulasi untuk memeriksa model dan variasi sampel, bukan menebak hasil game nyata.
Sumber dan metode
- ECMAScript — Math.random() untuk rentang dan sifat API.
- MDN — Crypto.getRandomValues() untuk penggunaan generator kriptografis dan entropi.
Rumus PRD, konstanta numerik, dan perlakuan rentetan dijelaskan dari implementasi model RumusGame. Rujukan diperiksa 12 November 2026. Lihat metodologi dan rata-rata crit damage.