java用户注册时后台随机生成不重复的10位数

我想做一个识别用户的ID号。java后台自动生产8-10的随机数,且首位不能够唯0。8-10也不可全为0。代码如何实现

4个回答

Calendar c=Calendar.getInstance();
    String time=new SimpleDateFormat("yyyy-MM-ddHHmmss").format(c.getTime()).toString();
    StringBuffer s=new StringBuffer(time.substring(14, 16));
    Long sys=System.currentTimeMillis();
    s.append(sys.toString().substring(11, 13));
    Double tm=Math.random()*10000+1;
    s.append(tm.toString().substring(tm.toString().length()-4, tm.toString().length()));
    return s;

这个,生成12位,是我以前写的,也很好理解,不重复,修改一下位数就好了

warmcore
warmcore 回复qq_39597872: 你说的对,我这个有问题,是我以前考虑不周。
接近 3 年之前 回复
qq_39597872
qq_39597872 你这个是如何保证当前时间的秒数和当前时间的毫秒数的最后两位数不重复的 没懂?
接近 3 年之前 回复

uuid 截取前10个不就行了

获取当前时间精确到秒,转换为字符串格式,截取后十位,不足补零。

试试这个可以吗

public class GetRandomID {

    public static void main(String[] args) {

        Random r = new Random();
        StringBuffer sb = new StringBuffer(10);

        for (int j = 1; j <= 10; j++) {

            int i = r.nextInt(10);

            if (j == 1 || (j >= 8 && j <= 10)) {
                while (i == 0) {
                    i = r.nextInt(10);
                }
            }

            sb.append(i);
        }

        System.out.println("random num is:" + sb.toString());
    }
}
qq_36330624
I'm a waste 回复engchina: 你这么搞八千条就能把自己 搞炸
一年多之前 回复
engchina
engchina 回复sinat_38913556: 最后应该跟数据库已有值进行对比,如果不存在,使用这个值。如果存在,再重新取值。
大约 3 年之前 回复
sinat_38913556
sinat_38913556 这个不能保证绝对不会重复把
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐