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
public class RandomString {
static String getAlphaNumericString( int n)
{
String AlphaNumericString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "0123456789"
+ "abcdefghijklmnopqrstuvxyz" ;
StringBuilder sb = new StringBuilder(n);
for ( int i = 0 ; i < n; i++) {
int index
= ( int )(AlphaNumericString.length()
* Math.random());
sb.append(AlphaNumericString
.charAt(index));
}
return sb.toString();
}
public static void main(String[] args)
{
int n = 20 ;
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
import java.util.*;
import java.nio.charset.*;
class RandomString {
static String getAlphaNumericString( int n)
{
byte [] array = new byte [ 256 ];
new Random().nextBytes(array);
String randomString
= new String(array, Charset.forName( "UTF-8" ));
StringBuffer r = new StringBuffer();
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 r.toString();
}
public static void main(String[] args)
{
int n = 20 ;
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