4

我正在尝试使用特殊字符生成随机数

我对简单整数所做的是

Random randomGenerator = new Random();
int randomNumber = randomGenerator.nextInt();

我该怎么做才能在我的随机数中得到这样的东西

String salt = "Random$SaltValue#WithSpecialCharacters12@$@4&#%^$*";

谢谢

4

5 回答 5

9

您可以尝试以下方法:

  • 初始化您的特殊字符集。
  • 创建一个 StringBuilder 来包含您想要的字符串。
  • 获取随机字符并附加到 StringBuilder 对象。

编码:

final String alphabet = "<Your special characters>";
final int N = alphabet.length();
Random rd = new Random();
int iLength = <length you want>;
StringBuilder sb = new StringBuilder(iLength);
for (int i = 0; i < iLength; i++) {
    sb.append(alphabet.charAt(rd.nextInt(N)));
}
于 2013-06-05T08:00:04.863 回答
7

如果您乐于使用第三方库,您可能会发现RandomStringUtilsApache Commons Lang 的课程很有帮助。

您可以指定允许的字符集(或使用所有可用字符)。

于 2013-06-05T07:59:16.110 回答
2
import java.util.*;

class Test {

  static Random r = new Random();

  static char[] choices = ("abcdefghijklmnopqrstuvwxyz" +
      "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
      "01234567890" +
      "$#_").toCharArray();

  public static String getSalt(int len) {
    StringBuilder salt = new StringBuilder(len);
    for (int i = 0; i<len; ++i)
      salt.append(choices[r.nextInt(choices.length)]);
    return salt.toString();
  }

  public static void main(String[]_) {
    System.out.println(getSalt(32));
  }
}

示例输出:vdq5L6bANFIQH_MUyKyZxLcOkJeB3uJ1

于 2013-06-05T08:04:46.690 回答
2

如果你想生成这个http://en.wikipedia.org/wiki/Special_characters特殊字符然后试试这个

char c = (char) (randomGenerator.nextInt(0xB4 - 21 + 1) + 21);
于 2013-06-05T08:09:01.347 回答
1
String alphabet = "here specify all the characters you want";
    final int N = alphabet.length();

    Random r = new Random();
    String finalStr= "";

    for (int i = 0; i < 50; i++) {
       finalStr+=alphabet.charAt(r.nextInt(N));
    }
于 2013-06-05T07:59:23.387 回答