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.
- First take char between 0 to 256 and traverse.
- Check char is alphabetic or numeric.
- If yes, then add at the end of our String
- Return String
-
Method 3: Using Regular Expressions
- First take char between 0 to 256.
- remove all char except 0-9, a-z and A-Z.
- Random select an char
- 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