生成唯一的数字位数

时间:2013-03-28 13:52:06

标签: java string random concatenation

以下代码编译正常,但不会产生位数

ganerateNewRandom("aaaa", 3)

结果为aaa435

以下代码编译正常,但不会产生位数

import java.util.*;

public class Student
{
    private String studentId;

    private String name;

    private Random random;


    public Student( String name)

    {
        studentId = "UnKnow";

        this.name = name;

        random = new Random();

    }

    public String ganerateNewRandom(String prefix, int number)

    {

        int index = random.nextInt(number);

        return prefix + number + "";
    }
}

3 个答案:

答案 0 :(得分:4)

 public String ganerateNewRandom(String prefix, int number) {  //sic

    StringBuffer ret = new StringBuffer(prefix);

    for(int i=0;i<number;i++) ret.append(random.nextInt(1000));

    return ret.toString();

}

在上面引用的案例中,nextInt(3)将返回0,1或2.没有你要找的东西。

答案 1 :(得分:2)

Random.nextInt(int n)州的API:

  

返回一个伪随机数,在0之间均匀分布的int值   (包括)和指定值(不包括)

如果您要生成3个随机数,请创建for-loop以追加n生成来自Random的数字,并将其附加到prefix

答案 2 :(得分:1)

在这里使用String.format可能值得:

static private Random random = new Random();

public static String ganerateNewRandom(String prefix, int digits) {
  return String.format("%s%03d", 
                       prefix, 
                       random.nextInt((int)Math.pow(10, digits)));
}

注意:

  • random.nextInt的参数是上限,而不是位数。您需要10^digits才能获得所需的号码。
  • 使用%03d将填充任何数字&lt; 100为你的零。