2011-11-14 39 views

回答

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,对于e xample)。

但是,这应该是你尝试做的一个好的开始。

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

这里是我的答案...您的文章是非常有用......非常感谢 公共类RandomeString { \t \t公共焦炭randomNumber(){ \t \t INT randomNum = 97 + (新随机())。nextInt(122-97); \t \t char randomChar =(char)randomNum; \t \t return randomChar; } \t \t公共字符串随机量(INT N){ \t \t \t StringBuilder的SB =新的StringBuilder(); \t \t \t \t \t \t对(INT I = 0; I Rojin