Rumus dadu acak?
Math.floor(Math.random() * 6) + 1 menghasilkan bilangan bulat 1-6 dengan probabilitas sama. Untuk koin gunakan Math.round(Math.random()) untuk mendapat 0 atau 1.
Hasilkan angka acak dengan rentang dan jumlah kustom
Acak semu dengan distribusi statistik yang baik, tapi bisa diprediksi jika seed diketahui. Gunakan crypto.getRandomValues() untuk keamanan karena menggunakan pool entropi OS.
Math.floor(Math.random() * 6) + 1 menghasilkan bilangan bulat 1-6 dengan probabilitas sama. Untuk koin gunakan Math.round(Math.random()) untuk mendapat 0 atau 1.
Gunakan Fisher-Yates pada array [1..45] dan ambil 6 elemen pertama. Ini menghasilkan kombinasi yang benar-benar acak tanpa duplikat.
Komputer biasanya menggunakan "angka acak semu" — Math.random() menggunakan algoritma deterministik berbasis seed untuk menghasilkan urutan yang terlihat acak. Angka acak nyata memerlukan entropi dari fenomena fisik seperti peluruhan radioaktif atau gangguan termal. Untuk game dan simulasi, acak semu sudah cukup; tapi dalam kriptografi, perbedaannya sangat penting.
Jika penyerang bisa menentukan seed yang digunakan Math.random(), mereka dapat mereproduksi semua nilai "acak" — termasuk token, session ID, dan tautan reset kata sandi. crypto.getRandomValues() dari Web Crypto API menggunakan pool entropi sistem operasi, cocok untuk aplikasi yang sensitif keamanan. Selalu gunakan crypto API untuk nilai yang harus tidak bisa ditebak.
Fisher-Yates memproses array dari belakang, di setiap langkah menukar elemen saat ini dengan elemen di posisi acak yang belum diproses, kompleksitas O(n). Pendekatan naif "generate dan cek duplikat" menjadi semakin lambat mendekati batas, sedangkan Fisher-Yates selalu berjalan linear dan menjadi dasar algoritma shuffling modern.
Generator angka acak yang baik menghasilkan distribusi seragam — setiap nilai dalam rentang memiliki probabilitas yang sama. Rumus bilangan bulat: Math.floor(Math.random() * (max - min + 1)) + min. Untuk simulasi yang memerlukan distribusi normal atau Poisson, diperlukan transformasi tambahan seperti Box-Muller.
Keunggulan rumah dalam kasino berasal dari desain matematika, bukan kecurangan angka acak. Roda roulette memiliki 37 slot (0-36), ketika 0 muncul kasino mengambil semua taruhan, menciptakan keunggulan 2.7%. Perjudian online memerlukan generator angka acak yang disertifikasi oleh pihak ketiga.