如何在java中生成随机字符串?

时间:2011-11-14 04:25:39

标签: java

  

可能重复:
  How to generate a random alpha-numeric string in Java

我想编写一个按指定长度构建随机字符串的代码。 怎么办呢?

2 个答案:

答案 0 :(得分:4)

以下是生成两种类型字符串的示例。

import java.security.SecureRandom;
import java.math.BigInteger;

public final class SessionIdentifierGenerator
{

  private SecureRandom random = new SecureRandom();

  public String nextSessionId()
  {
    return new BigInteger(130, random).toString(32);
  }

}

输出:ponhbh78cqjahls5flbdf4dlu4

参考here

String uuid = UUID.randomUUID().toString();
System.out.println("uuid = " + uuid);

输出:281211f4-c1d7-457a-9758-555041a5ff97

参考here

答案 1 :(得分:2)

好吧,首先编写一个函数,它将为您提供满足您要求的随机字符,然后根据所需的长度将其包装在for循环中。

以下程序提供了一种方法,使用常量字符池和随机数生成器:

import java.util.Random;

public class testprog {
    private static final char[] pool = {
        'a','b','c','d','e','f','g',
        'h','i','j','k','l','m','n',
        'o','p','q','r','s','t','u',
        'v','w','x','y','z'};

    private Random rnd;

    public testprog () { rnd = new Random(); }

    public char getChar() { return pool[rnd.nextInt(pool.length)]; }

    public String getStr(int sz) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < sz; i++)
            sb.append(getChar());
        return new String(sb);
    }

    public static void main(String[] args) {
        testprog tp = new testprog ();
        for (int i = 0; i < 10; i++)
            System.out.println (tp.getStr(i+5));
    }
}

在一个特定的运行中,这给了我:

hgtbf
xismun
cfdnazi
cmpczbal
vhhxwjzbx
gfjxgihqhh
yjgiwnftcnv
ognwcvjucdnm
hxiyqjyfkqenq
jwmncfsrynuwed

现在,您可以根据不同的字符集调整字符池,甚至可以通过更改它们在数组中出现的频率来调整特定字符的偏移(e个字符多于{z个字符。例如{1}}。

但对于你想要做的事情来说,这应该是一个良好的开端。