Banner Java

Menghasilkan Nilai Karakter Acak Menggunakan Kelas Math

Salah satu kelas Java dan berperan penting 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 acak yang dihasilkan oleh metoda random sangat penting dan berguna dalam pemrograman. Dengan menggunakan metode random dari kelas Math ini, Anda dapat menghasilkan baik nilai numerik maupun nilai karakter acak dalam rentang (range) tertentu. Anda dapat menentukan rentang nilai acak tertentu yang dapat dihasilkan oleh metoda random dari kelas Math dengan formula (rumus) sebagai berikut:

   x + Math.random() * y

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

Setiap karakter mempunyai unicode antara 0 - FFFF dalam hexadecimal atau 65535 dalam desimal. Unicode adalah skema pengkodean 16 bit yang diperkenalkan oleh Unicode Consortium untuk menukar, memproses dan menampilkan teks dalam macam-macam bahasa. Menghasilkan nilai karakter acak berarti menghasilkan nilai integer acak antara 0 - 65535 sebagaimana dalam ekspresi aritmatika di bawah ini.

   (int) (Math.random() * (65535 + 1)

Karakter huruf kecil (lowercase) adalah nilai integer berurutan dimulai dari unicode untuk ‘a’, kemudian ‘b’, ‘c’, ‘d’ dan seterusnya sampai ‘z’. Unicode untuk karakter a adalah (int) ‘a’, sehingga karakter huruf kecil acak merupakan nilai integer antara (int) ‘a’ dan (int) ‘z’.

   (int) ((int) ‘a’ + Math.random() * ((int) ‘z’ – (int) ‘a’ + 1)

Sebagaimana yang sudah dijelaskan pada materi sebelumnya, semua operator numerik dapat digunakan di nilai karakter. Nilai karakter akan dikonversi secara otomatis ke nilai numerik apabila nilai yang lain adalah karakter atau numerik sehingga ekspresi di atas dapat disederhanakan sebagai berikut:

   ‘a’ + Math.random() * (‘z’ – ‘a’ + 1)

Ekspresi tersebut menghasilkan nilai numerik acak yang mewakili nilai karakter dengan rentang ‘a’ – ‘z’. Untuk dapat menghasilkan nilai karakter huruf kecil secara acak dengan rentang a - z, Anda dapat melakukan pengkonversian (type casting) ekspresi di atas dengan (char).

   (char) ( ‘a’ + Math.random() * (‘z’ – ‘a’ + 1))

Anda juga dapat menghasilkan nilai karakter acak dengan rentang nilai A – Z menggunakan ekspresi sebagai berikut:

   (char) (‘A’ + Math.random() * (‘Z’ – ‘A’ + 1))

Berikut ini adalah contoh program yang menampilkan 40 karakter huruf besar (uppercase) acak yang dihasilkan oleh metoda random dari kelas Math. Karakter-karakter tersebut akan ditampilkan berderet dengan masing-masing deret berjumlah 10 karakter.

// Nama file : NilaiKarakterAcak.java
// Menampilkan 40 nilai karakter acak

// Mengimpor Java predifined class
import javax.swing.JOptionPane;
import javax.swing.JTextArea;

// Deklarasi kelas
public class NilaiKarakterAcak {

   // Metoda main
   public static void main(String[] args) {

      JTextArea areaTampilan;
      char karakterAcak;

      String deretKarakter = "40 Nilai Karakter Acak\nDengan Rentang Nilai A - Z\n\n";

      // Membuat obyek dari kelas JTextArea
      areaTampilan = new JTextArea();

      for (int x = 1; x <= 40; x++) {

         karakterAcak = (char) ('A' + Math.random() * ('Z' - 'A' + 1));
         deretKarakter += karakterAcak + "  ";

         if ((x % 10 == 0) && (x % 2 == 0))
            deretKarakter += "\n";
      }

      areaTampilan.setText(deretKarakter);

      JOptionPane.showMessageDialog(null, areaTampilan, "Nilai Karakter Acak",
         JOptionPane.INFORMATION_MESSAGE);

      // Mengakhiri aplikasi GUI
      System.exit(0);
   }
}

Dari listing kode program di atas, metoda random dari kelas Math yang berada di paket java.lang menghasilkan nilai karakter huruf besar acak dengan rentang nilai A - Z.

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.