美文网首页
《每日工作总结》随机兑换码的生成——15.09.14

《每日工作总结》随机兑换码的生成——15.09.14

作者: 懒人成长 | 来源:发表于2015-09-14 18:37 被阅读631次

    随机兑换码的生成

      由于项目中需要生成兑换码发放给用户来兑换VIP功能,所以需要一个能够生成重复率低的随机算法,然而才疏学浅,只能想到下面这种简单的方式,但是也还能保证重复率比较低,基本在M<sup>n</sup>次中才会出现一次,M表示选用的字符的数量,n表示兑换码的长度,所以个人认为这种方式还是可行的。下面是简单的流程和代码实现。
    
    1. 确定兑换码包含的字符集合
    2. 确定是否添加分隔符,若需要添加,则选用什么符号
    3. 循环生成满足长度的字符串,根据位置判断是否需要插入分隔符。
    private static final String CHARARTERS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    /** 
    * 随机产生length位长度的字符串,每4位以空格分隔 
    * 
    * @param length 兑换码长度
    * @return 
    */
    public static String getCode(int length) {    
        StringBuilder stringBuilder = new StringBuilder();    
        for (int i = 0; i < length; i++) {        
            Random random = new Random();        
            int index = random.nextInt(36);
            if (i % 4 == 0)            
                stringBuilder.append(" " + CHARARTERS.charAt(index));
            else
                stringBuilder.append(CHARARTERS.charAt(index));
        }
        return stringBuilder.toString().trim();
    }
    
      如果还是觉得这样生成的兑换码不是很保险,可以在每次生成后与已生成的兑换码列表做个比较,如果有重复的则重新生成一遍。

    相关文章

      网友评论

          本文标题:《每日工作总结》随机兑换码的生成——15.09.14

          本文链接:https://www.haomeiwen.com/subject/rhqmcttx.html