Metoda kelas Math dapat dikelompokkan ke dalam trigonometri (toRadian, toDegrees, sin, cos, tan, asin, acos), pembulatan (ceil, floor, rint, round), eksponen (pow, sqrt), nilai mutlak (abs), nilai maksimum (max), nilai minimum (min) dan metoda random yang bisa menghasilkan nilai double acak (random) lebih besar atau sama dengan 0.0 dan lebih kecil dari 1.0 (0 <= Math.random < 1.0).
Nilai numerik acak yang dihasilkan metoda random ini penting dan berguna dalam pemrograman. Dengan metode random dari kelas Math ini, Anda dapat menghasilkan nilai numerik atau nilai karakter acak dalam rentang (range) tertentu. Anda dapat menentukan rentang nilai numerik acak tertentu yang dihasilkan oleh metoda random dengan formula sebagai berikut:
x + Math.random() * y
Formula di atas menghasilkan nilai numerik acak dengan rentang nilai antara x dan x + y dengan tidak mengikutsertakan x + y.
Baca artikel Menghasilkan Nilai Karakter Acak Dari Kelas Math Di Java
Hasil metode random dari kelas Math adalah nilai numerik double dengan rentang nilai 0.0 sampai dengan 1.0. Dengan mengunakan konversi tipe data (type casting), Anda juga dapat menghasilkan nilai integer acak dengan rentang nilai tertentu. Berikut ini adalah dua pernyataan untuk menghasilkan nilai numerik integer acak dengan rentang nilai yang ditentukan:
(int) (Math.random() * 15); 20 + (int) (Math.random() * 25);
Formula pertama menghasilkan nilai integer acak dengan rentang nilai 0 – 14 dan formula kedua menghasilkan nilai integer acak dengan rentang nilai 20 – 44. (int) yang ada di kedua formula tersebut digunakan untuk mengkonversi (casting) nilai double acak yang dihasilkan oleh metoda random ke nilai int.
Berikut ini adalah contoh program Java sederhana menggunakan metoda random kelas Math untuk menghasilkan 40 nilai integer acak dengan rentang nilai 20 - 44. Program menggunakan perulangan for untuk melakukan interasi sebanyak 40 kali dan menampilkan hasilnya di kotak dialok pesan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | // Nama file : NilaiNumerikAcak.java // Menampilkan sejumlah 40 nilai numerik acak // Mengimpor Java predifined class import javax.swing.JOptionPane; import javax.swing.JTextArea; // Deklarasi kelas public class NilaiNumerikAcak { // Metoda main public static void main(String[] args) { JTextArea areaTampilan; int nilaiAcak; String deretNilai = "40 Nilai Integer Acak\nDengan Rentang Nilai 20 - 44\n\n"; // Membuat obyek dari kelas JTextArea areaTampilan = new JTextArea(); for (int a = 1; a <= 40; a++) { nilaiAcak = 20 + (int) (Math.random() * 25); deretNilai += nilaiAcak + " "; if ((a % 10 == 0) && (a % 2 == 0)) deretNilai += "\n"; } areaTampilan.setText(deretNilai); JOptionPane.showMessageDialog(null, areaTampilan, "Nilai Integer Acak", JOptionPane.INFORMATION_MESSAGE); // Mengakhiri aplikasi GUI System.exit(0); } } |
Dari kode program di atas, baris nomor 22 adalah perulangan for yang mendeklarasikan variabel kontrol a dengan nilai awal 1. Perulangan for ini melakukan iterasi sebanyak 40 kali (a <= 40). Di setiap iterasinya, blok pernyataan di baris nomor 24-28 dieksekusi.
Pernyataan pemberian baris nomor 24, 20 + (int) (Math.random() * 25), menghasilkan nilai integer dengan rentang nilai 20 - 44. Di setiap iterasi perulangan for, satu nilai numerik integer mana saja yang muncul disimpan di variabel nilaiAcak dengan tipe data integer.
Nilai yang tersimpan di variabel nilaiAcak untuk selanjutnya dirangkai dengan literal string berupa satu spasi dan kemudian ditambahkan ke nilai dari variabel deretNilai (baris nomor 25). Selama proses iterasi, nilai variabel deretNilai terus dirangkai dengan nilai variabel nilaiAcak yang sudah dirangkai dengan sebuah spasi.
Baris nomor 27 adalah penyeleksian if sederhana. Di penyeleksian if tersebut, bila nilai variabel kontrol a habis dibagi 10 dan 2, jika ((a % 10 == 0) && (a % 2 == 0) bernilai benar, maka nilai string berupa karakter baris baru akan dirangkai ke nilai yang sudah tersimpan di variabel deretNilai. Dengan demikian, deret nilai yang terbentuk dibatasi hanya 10 nilai integer dan kemudian deret baru disusun di baris berikutnya.