Wednesday, July 3, 2024
HomeLanguagesJavaGenerate random String of given size in Java

Generate random String of given size in Java

Given a size as n, The task is to generate a random alphanumeric String of this size. Below are various ways to generate random alphanumeric String of given size: Prerequisite : Generating random numbers in Java

  • Method 1: Using Math.random() Here the function getAlphaNumericString(n) generates a random number of length a string. This number is an index of a Character and this Character is appended in temporary local variable sb. In the end sb is returned. 

JAVA




// Java program generate a random AlphaNumeric String
// using Math.random() method
 
public class RandomString {
 
 // function to generate a random string of length n
 static String getAlphaNumericString(int n)
 {
 
  // choose a Character random from this String
  String AlphaNumericString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
         + "0123456789"
         + "abcdefghijklmnopqrstuvxyz";
 
  // create StringBuffer size of AlphaNumericString
  StringBuilder sb = new StringBuilder(n);
 
  for (int i = 0; i < n; i++) {
 
   // generate a random number between
   // 0 to AlphaNumericString variable length
   int index
    = (int)(AlphaNumericString.length()
      * Math.random());
 
   // add Character one by one in end of sb
   sb.append(AlphaNumericString
      .charAt(index));
  }
 
  return sb.toString();
 }
 
 public static void main(String[] args)
 {
 
  // Get the size n
  int n = 20;
 
  // Get and display the alphanumeric string
  System.out.println(RandomString
       .getAlphaNumericString(n));
 }
}


Output:

kU9vRVm9T1lFMbi3duO1
  • Method 2: Using CharSet Generate 20 character long alphanumeric string randomly using Charset which is in java.nio.charset package.
    1. First take char between 0 to 256 and traverse.
    2. Check char is alphabetic or numeric.
    3. If yes, then add at the end of our String
    4. Return String
  • Method 3: Using Regular Expressions
    1. First take char between 0 to 256.
    2. remove all char except 0-9, a-z and A-Z.
    3. Random select an char
    4. Add at the end our required variable
  • Method 4: Generating random String of UpperCaseLetter/LowerCaseLetter/Numbers When some specific characters are needed in the alphanumeric string, like only the UpperCaseLetter or LowerCaseLetter or Numbers, use this method. Below example generates a random String of LowerCase letters of size n. Below is the implementation of the above approach: 

JAVA




// Java program generate a random AlphaNumeric String
// using CharSet method
 
import java.util.*;
import java.nio.charset.*;
 
class RandomString {
 
 static String getAlphaNumericString(int n)
 {
 
  // length is bounded by 256 Character
  byte[] array = new byte[256];
  new Random().nextBytes(array);
 
  String randomString
   = new String(array, Charset.forName("UTF-8"));
 
  // Create a StringBuffer to store the result
  StringBuffer r = new StringBuffer();
 
  // Append first 20 alphanumeric characters
  // from the generated random String into the result
  for (int k = 0; k < randomString.length(); k++) {
 
   char ch = randomString.charAt(k);
 
   if (((ch >= 'a' && ch <= 'z')
    || (ch >= 'A' && ch <= 'Z')
    || (ch >= '0' && ch <= '9'))
    && (n > 0)) {
 
    r.append(ch);
    n--;
   }
  }
 
  // return the resultant string
  return r.toString();
 }
 
 public static void main(String[] args)
 {
  // size of random alphanumeric string
  int n = 20;
 
  // Get and display the alphanumeric string
  System.out.println(getAlphaNumericString(n));
 }
}


Output:

qbhalyuzrenuwgvqidno

Time complexity: O(n) where n is size of string to be generated

Auxiliary space: O(n) for StringBuffer

Nokonwaba Nkukhwana
Experience as a skilled Java developer and proven expertise in using tools and technical developments to drive improvements throughout a entire software development life cycle. I have extensive industry and full life cycle experience in a java based environment, along with exceptional analytical, design and problem solving capabilities combined with excellent communication skills and ability to work alongside teams to define and refine new functionality. Currently working in springboot projects(microservices). Considering the fact that change is good, I am always keen to new challenges and growth to sharpen my skills.
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments