Open In App

Generate random String of given size in Java

Improve
Improve
Like Article
Like
Save
Share
Report

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



Last Updated : 26 Dec, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads