Banner Java

Menghasilkan Nilai Numerik Acak Menggunakan Kelas Math

Salah satu kelas Java yang penting dan berperan dalam operasi matematika adalah kelas Math yang terletak di paket java.lang. Kelas Math memiliki metoda-metoda yang dapat digunakan untuk melakukan fungsi matematika dasar seperti trigonometri (toRadian, sin, cos, tan, asin, acos, toDegrees), 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 oleh metoda random ini sangat penting dan berguna dalam pemrograman. Dengan menggunakan metode random dari kelas Math ini, Anda dapat menghasilkan nilai numerik maupun nilai karakter acak dalam rentang (range) tertentu. Anda dapat menentukan rentang nilai numerik acak tertentu yang dihasilkan oleh metoda random dari kelas Math dengan formula (rumus) sebagai berikut:

   x + Math.random() * y

Formula di atas akan menghasilkan nilai numerik acak dengan rentang nilai antara x dan x + y dengan tidak mengikutsertakan x + y.

Metode random dari kelas Math akan menghasilkan nilai numerik double dengan rentang nilai dari 0.0 sampai dengan 1.0. Dengan mengunakan pengkonversian tipe data (type casting), Anda juga dapat menghasilkan nilai integer acak dengan rentang nilai tertentu. Berikut ini adalah contoh pernyataan untuk menghasilkan nilai numerik integer acak dengan rentang nilai yang telah ditentukan:

   (int) (Math.random() * 15)
   20 + (int) (Math.random() * 25)

Formula pertama akan menghasilkan nilai integer acak dengan rentang nilai 0 – 14 dan formula kedua akan menghasilkan nilai integer acak dengan rentang nilai 20 – 44. (int) di kedua formula tersebut digunakan untuk mengkonversi (casting) nilai double acak yang dihasilkan oleh metoda random ke nilai int.

Contoh program berikut ini akan menggunakan metoda random dari kelas Math untuk menghasilkan 40 nilai integer acak dengan rentang nilai 20 - 44. Program akan menggunakan perulangan for untuk melakukan interasi sebanyak 40 kali dan menampilkan hasilnya di kotak dialok pesan.

// 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 akan melakukan iterasi sebanyak 40 kali (a <= 40). Di setiap proses iterasi dari perulangan for, blok pernyataan dari perulangan for akan dieksekusi (baris nomor 24-28). Ekspresi pernyataan pemberian di baris nomor 24, 20 + (int) (Math.random() * 25), akan menghasilkan nilai integer dengan rentang nilai 20 - 44. Di setiap iterasi perulangan for, satu nilai numerik integer mana saja yang muncul dengan rentang nilai 20 - 44 akan disimpan ke variabel nilaiAcak dengan tipe data integer. Nilai yang tersimpan di variabel nilaiAcak selanjutnya dikombinasikan dengan literal string berupa satu spasi dan kemudian ditambahkan ke nilai dari variabel deretNilai (baris nomor 25). Selama proses iterasi, nilai variabel deretNilai akan terus dirangkai dengan nilai variabel nilaiAcak yang telah dikombinasikan dengan sebuah spasi.

Baris nomor 27 adalah penyeleksian if sederhana. Di dalam penyeleksian tersebut, apabila nilai variabel kontrol a habis dibagi dengan 10 dan 2, jika ((a % 10 == 0) && (a % 2 == 0) bernilai benar, maka nilai string berupa karakter baris baru akan ditambahkan atau dirangkai ke nilai yang sudah tersimpan di variabel deretNilai. Dengan pernyataan tersebut, deret nilai yang terbentuk dibatasi hanya 10 nilai integer dan kemudian deret baru akan disusun di baris berikutnya.

Baca artikel terkait lainnya:

Untuk memperbaiki mutu konten, Anda dapat berpartisipasi dengan cara melaporkan apabila menemukan kesalahan ketik, kata-kata rangkap, redaksi kurang pas (jelas), gambar pendukung tidak ada dan sebagainya melalui form Kontak Kami untuk mendapatkan perbaikan. Terima kasih atas kerjasamanya.

Hindro HindriantoHindro adalah pendiri sekaligus admin termasmedia.com dan topikit.com, blog online yang mengulas teknologi informasi. Dunia web mulai ditekuni tahun 2012 dengan mempelajari CMS Joomla dan Wordpress. Beberapa buku yang sekarang dipelajari antara lain PHP, HTML5, ASP.NET 4.5, JavaScript, CSS3, MySQL, Adobe Dreamweaver, Adobe Photoshop dan Adobe Flash.