Membuat Karakter Secara Random

Sebelumnya agan sudah mengetahui tentang angka random atau acak, kemudian dikarenakan karakter atau char itu di koding menggunakan integer, maka dapat disimpulkan bahwa membuat atau menggenerasikan karakter adalah sama dengan menggenerasikan integer.

Kali ini akan dibahas untuk membuat karakter secara acak, yaitu untuk:
  • Digit angka
  • Huruf kecil
  • Huruf besar
  • Simbol, huruf, angka (variasi karakter)


Karena program komputer itu memproses data angka dan karakter, maka tentunya sangat penting untuk memahami karakter-karakter dan bagaimana cara memprosesnya.

Setelah di bahas sebelumnya pada bagian char, unicode dan ASCII,  setiap karakter itu memiliki Unicode yang berbeda diantara 0 dan FFFF pada heksadesimal (atau 65535 dalam desimal). Jadi untuk membuat karakter random adalah dengan cara membuat integer secara random dari 0 dan 65535, meggunakan ekspresi di bawah ini:

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

Dikarenakan 0 <=Math.random<1.0, maka anda harus menambahkan 1 ke 65535.

Selanjutnya bagaimana cara untuk membuat karakter huruf kecil secara acak?

Sebelumnya perlu diketahui bahwa Unicode untuk huruf kecil adalah integer berlanjut yang dimulai dari Unicode untuk huruf a, b, c, d..... sampai z.

Unicode untuk a  dan z adalah:
(int)'a'  dan (int)'z'

Sehingga integer acak antara (int)'a' dan (int)'z' adalah :

(int)((int)'a' + Math.random() * ((int)'z' - (int)'a' + 1))

Sebelumnya juga anda sudah mengetahui mengenai casting char dengan tipe numerik. Semua operator numerik dapat diaplikasikan pada operand dari char.

Oleh karena itu kode sebelumnya dapat disederhanakan menjadi 'a' + Math.random() * ('z' - 'a' + 1), dan pengacakan huruf kecil dapat dilakukan dengan (char)('a' + Math.random() * ('z' - 'a' + 1)).

Demikian pula halnya dengan karakter random diantara dua karakter yaitu karakter1 dan karakter2, dimana karakter1 < karakter2, dapat dilakukan sebagai berikut:

(char)(karakter1 + Math.random() * (karakter2 – karakter1 + 1))

Berikut ini adalah contoh program untuk membuat karakter secara random:

  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
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
import java.util.Scanner;

public class TestKarakterAcak {
 
 public static void main (String args []){
  
  Scanner input = new Scanner (System.in);
  
  System.out.print("Berapa jumlah karakter acak yang anda inginkan: ");
  int jumlahKarakter = input.nextInt();
  
  System.out.print("Berapa jumlah karakter dalam setiap baris yang anda inginkan: ");
  int jumlahKarakterPerbaris = input.nextInt();
  
  System.out.println("Karakter acak digit angka adalah: ");
  
  for(int i = 0; i <jumlahKarakter; i++){
   
   char karakter =  TestKarakterAcak.buatKarakterDigitAngkaAcak();
   if((i + 1) % jumlahKarakterPerbaris == 0){
    
    System.out.println(karakter);
   }
   
   else
    System.out.print(karakter);
  }
  
  System.out.println("Karakter acak huruf kecil adalah: ");
  
  for(int i = 0; i <jumlahKarakter; i++){
   
   char karakter =  TestKarakterAcak.buatKarakterHurufKecilAcak();
   if((i + 1) % jumlahKarakterPerbaris == 0){
    
    System.out.println(karakter);
   }
   
   else
    System.out.print(karakter);
  }
  
  System.out.println("Karakter acak huruf besar adalah: ");
  
  for(int i = 0; i <jumlahKarakter; i++){
   
   char karakter =  TestKarakterAcak.buatKarakterHurufBesarAcak();
   if((i + 1) % jumlahKarakterPerbaris == 0){
    
    System.out.println(karakter);
   }
   
   else
    System.out.print(karakter);
  }
  
  System.out.println();
  System.out.print("Berikut ini adalah contoh karakter acak antara '@' dan '*': \n");
  
  
  for(int i = 0; i <jumlahKarakter; i++){
   
   char karakter =  TestKarakterAcak.buatKarakterAcakVariasi('@', '*');
   if((i + 1) % jumlahKarakterPerbaris == 0){
    
    System.out.println(karakter);
   }
   
   else
    System.out.print(karakter);
  }
  
  
 }
 
 public static char buatKarakterAcak(char karakter1, char karakter2){
  return (char)(karakter1 + Math.random() * (karakter2 - karakter1 + 1));
 }
 
 public static char buatKarakterDigitAngkaAcak(){
  return buatKarakterAcak('0', '9');
 }
 
 public static char buatKarakterHurufKecilAcak(){
  return buatKarakterAcak('a', 'z');
 }
 
 public static char buatKarakterHurufBesarAcak(){
  return buatKarakterAcak('A', 'Z');
 }
 
 public static char buatKarakterAcakVariasi(char dariChar, char keChar){
  
  int unicode = dariChar + (int)((keChar - dariChar + 1) * Math.random());
  return (char)unicode; 
 }
 
 public static char buatKarakterAcakVariasi(){
  return buatKarakterAcakVariasi('\u0000', '\uFFFF');
 }

}

Output:
Berapa jumlah karakter acak yang anda inginkan: 100
Berapa jumlah karakter dalam setiap baris yang anda inginkan: 25
Karakter acak digit angka adalah:
6673672171118001397594311
5658340106010462402625436
9871665455839437542110804
1601351116117117572397649
Karakter acak huruf kecil adalah:
etmkvljhjhodeqatzmznfzqbh
gwtlpspawbrrqlfptrrxafpga
vyjjszmfvymjlfvaxsugdgwdc
fsoqgssjvadvwdwsjpmstfeju
Karakter acak huruf besar adalah:
BWADOINCBKSFSEKJKEFSWABES
BHQYPUMIWBIMIXJKPPAWWVKVY
PCDWIPFOOADHFYMALBSEHZXIQ
IQJIKFSJQTPKCETPVECPHLZNL

Berikut ini adalah contoh karakter acak antara '@' dan '*':
7:80;:<;9>3413:/4520?7436
-/;6;-45==:@81=>?>,>69,;=
;-9=5,?=1<=;=7.17=,/,79?>
:6=19587?06@-54:;0.;6=@89

No comments

Bahasa Java. Powered by Blogger.