Math: Fungsi Matematika
Object Math untuk pembulatan, pangkat, akar, dan trik penting: angka acak dengan Math.random.
Kalkulator bawaan
Math adalah object bawaan berisi fungsi dan konstanta matematika. Tidak perlu new, langsung pakai Math.namaFungsi().
Fungsi yang sering dipakai
console.log(Math.round(4.6)); // 5, bulat terdekat
console.log(Math.floor(4.9)); // 4, ke bawah
console.log(Math.ceil(4.1)); // 5, ke atas
console.log(Math.abs(-7)); // 7, nilai mutlak
console.log(Math.pow(2, 10)); // 1024, pangkat (atau 2 ** 10)
console.log(Math.sqrt(16)); // 4, akar kuadrat
console.log(Math.max(3, 9, 1)); // 9
console.log(Math.min(3, 9, 1)); // 1
console.log(Math.PI); // 3.14159...Math.max dan Math.min menerima banyak argumen, atau gabungkan dengan spread untuk array: Math.max(...angka).
Angka acak dengan Math.random
Math.random() menghasilkan desimal acak dari 0 (inklusif) sampai 1 (eksklusif). Untuk rentang tertentu, pakai rumus:
// acak 0 sampai 1 (desimal)
console.log(Math.random());
// acak 1 sampai 10 (bulat)
let dadu = Math.floor(Math.random() * 10) + 1;
console.log(dadu);
// rumus umum: Math.floor(Math.random() * (max - min + 1)) + min
function acak(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(acak(50, 100));Logikanya: random() * 10 menghasilkan 0 sampai 9.99, floor membulatkan ke bawah jadi 0-9, tambah 1 jadi 1-10.
Contoh: acak pilihan
let pilihan = ["gunting", "batu", "kertas"];
let komputer = pilihan[Math.floor(Math.random() * pilihan.length)];
console.log("Komputer memilih: " + komputer);Pola ini dipakai di game sederhana, shuffle, dan sampling data.
Catatan teknis: Math.random() tidak aman untuk kriptografi (token, password). Untuk kebutuhan keamanan, pakai crypto.getRandomValues(). Math.random cukup untuk game dan keperluan non-keamanan.
Studi kasus: game tebak angka
Gabungkan Math.random dengan loop untuk game sederhana:
let target = Math.floor(Math.random() * 100) + 1;
let tebakan = [50, 75, 60, 67, 63]; // simulasi tebakan pemain
let percobaan = 0;
for (let t of tebakan) {
percobaan++;
if (t === target) {
console.log("Benar! " + target + " dalam " + percobaan + "x coba");
break;
}
console.log(t + " terlalu " + (t < target ? "kecil" : "besar"));
}Game ini melatih banyak konsep sekaligus: random, loop, break, ternary, dan perbandingan. Coba kembangkan sendiri: batasi 7 percobaan, beri skor berdasarkan sisa percobaan, atau buat versi yang membaca input dari prompt().
Kesimpulan
Hafalkan rumus angka acak bulat karena ia muncul terus di latihan dan game. Sisanya, ingat bahwa Math punya fungsi untuk hampir semua kebutuhan matematika dasar.