tooliv

Generator Angka Acak

Hasilkan angka acak dengan rentang dan jumlah kustom

Urutkan

Generator Angka Acak

Seberapa acak Math.random()?

Acak semu dengan distribusi statistik yang baik, tapi bisa diprediksi jika seed diketahui. Gunakan crypto.getRandomValues() untuk keamanan karena menggunakan pool entropi OS.

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.

Cara menghasilkan nomor lotere?

Gunakan Fisher-Yates pada array [1..45] dan ambil 6 elemen pertama. Ini menghasilkan kombinasi yang benar-benar acak tanpa duplikat.

Angka Acak: Nyata vs Semu

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.

Mengapa Math.random() tidak aman untuk kata sandi?

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 Shuffle: Pemilihan Acak Tanpa Duplikat

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.

Distribusi Seragam dan Pentingnya

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.

Keacakan dalam Game dan Perjudian

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.

Pertanyaan yang Sering Diajukan

Seberapa acak Math.random()?

Acak semu dengan distribusi statistik yang baik, tapi bisa diprediksi jika seed diketahui. Gunakan crypto.getRandomValues() untuk keamanan karena menggunakan pool entropi OS.

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.

Cara menghasilkan nomor lotere?

Gunakan Fisher-Yates pada array [1..45] dan ambil 6 elemen pertama. Ini menghasilkan kombinasi yang benar-benar acak tanpa duplikat.

Alat Terkait