Java生成8位随机邀请码,不重复

public static String[] chars = new String[] { "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", "0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "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" };  

public static String generateShortUuid() {
    StringBuffer shortBuffer = new StringBuffer();
    String uuid = UUID.randomUUID().toString().replace("-", "");
    for (int i = 0; i < 8; i++) {
        String str = uuid.substring(i * 4, i * 4 + 4);
        int x = Integer.parseInt(str, 16);
        shortBuffer.append(chars[x % 0x3E]);
    }
    return shortBuffer.toString();  

}  

短8位UUID思想其实借鉴微博短域名的生成方式,但是其重复概率过高,而且每次生成4个,需要随即选取一个。

本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组,然后通过模62操作,结果作为索引取出字符,

//方法二:

public String genRandomNum(){
      int  maxNum = 36;
      int i;
      int count = 0;
      char[] str = { ‘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‘, ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘ };
      StringBuffer pwd = new StringBuffer("");
      Random r = new Random();
      while(count < 8){
       i = Math.abs(r.nextInt(maxNum));
       if (i >= 0 && i < str.length) {
        pwd.append(str[i]);
        count ++;
       }
      }
      return pwd.toString();
    }  

原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/8922585.html

时间: 2024-10-02 07:40:47

Java生成8位随机邀请码,不重复的相关文章

Java 生成32位随机字符编号

1 /** 2 * 生成32位编码 3 * @return string 4 */ 5 public static String getUUID(){ 6 String uuid = UUID.randomUUID().toString().trim().replaceAll("-", ""); 7 return uuid; 8 }

java生成16位随机UUID数

public void testUid() { for (int i = 0; i < 100; i++) { UUID uuid = UUID.randomUUID(); System.out.println(uuid.toString()); } } 9e0db051-5ca9-46f4-958f-ebd3e2ddae5c 071ca803-735b-4e5a-8d22-8abd49a251c8 c18e6338-ad63-42d7-b372-a3b2a382aded 6a64f5c5-0a

利用random生成6位随机验证码

使用random生成6位随机验证码 #!/usr/bin/env python # _*_ coding:utf-8 _*_ import random code = [] for i in range(6):     #可在此处改变条件表达式来调整生成数字的机率     if i == random.randint(0,5):         # 如果随机数与0-5中的随机数相等,生成数字验证码        code.append(str(random.randint(0,9)))     

全局唯一随机邀请码实现方式

背景 日常的网站开发中,会遇到网站的促销活动,就有涉及到邀请好礼的功能 成功邀请好友,则获取相应奖励,这时候,就有邀请码的需求 邀请码要求每个用户唯一 方法一. 可根据用户的uid生成邀请码 方法二. 邀请码可根据某个初始化id生成,用户主动请求,生成code,绑定uid 方法二,这种方式,需额外记录uid和code关系 方法一,根据uid生成,也可根据code反推出uid,不用额外查询,比较方便 实现 记录方法一的实现 由长数字转换为特定长度的code,首先需确定code的字符范围 可转换为

UUID 生成32位随机串

java通过jdk自带的UUID,生成32位的随机串 private static String generate_UUID() { UUID uuid=UUID.randomUUID(); String str = uuid.toString(); System.out.println("str: " + str); // bb01a3cd-987f-469d-9e0f-04dffa2d3278 return str.replace("-", "&quo

Java生成并打印二维码

本次做订餐系统中,需要用到在Java生成二维码,并在jsp页面打印并输出,其中在action中生成二维码. 关键代码如下 1 public void reWeiMa() throws Exception{ 2 //设置页面不缓存 3 HttpServletResponse response = ServletActionContext.getResponse(); 4 HttpServletRequest quest = ServletActionContext.getRequest(); 5

java 生存32位的MD5码

/*** * MD5加码 生成32位md5码 */ public static String stringToMD5(String inStr) { MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); } catch (Exception e) { e.printStackTrace(); return ""; } char[] charArray = inStr.toCha

Java生成名片式的二维码源码分享

世界上25%的人都有拖延症——但我觉得这统计肯定少了,至少我就是一名拖延症患者.一直想把“Java生成名片式(带有背景图片.用户网络头像.用户昵称)的二维码”这篇博客分享出来,但一直拖啊拖,拖到现在,真应了苏格兰的那句谚语——“什么时候都能做的事,往往什么时候都不会去做.” 零.效果图 左上角为微信头像. 沉默王二是文字昵称. 附带URL为http://blog.csdn.net/qing_gee的二维码 还有指定的背景图. 使用场景: 点公众号的微信菜单“我的二维码”,然后展示一张名片式的二维

java生成和解析二维码

前言 现在,二维码的应用已经非常广泛,在线生成器也是诸多,随手生成. 所以就和大家分享一个小案例,用zxing来做一个的二维码生成器,当然这个例子是比较简单,若是写的不好请多多包涵. ZXING项目是谷歌推出的用来识别多种格式条形码的开源项目,项目地址为https://github.com/zxing/zxing. 1.加载zxing依赖 用idea新建个maven项目,pom.xml添加对应的依赖 <dependency> <groupId>com.google.zxing<