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

随机兑换码的生成

  由于项目中需要生成兑换码发放给用户来兑换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();
}
  如果还是觉得这样生成的兑换码不是很保险,可以在每次生成后与已生成的兑换码列表做个比较,如果有重复的则重新生成一遍。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • 一直觉得快乐的人运气不会差的 场景一 95妹纸:咱俩差不多啊!你比我大两岁而已 我:我比你大多了,我**年的 95...
    海南小帅阅读 209评论 0 1
  • 2014年10月3日晚23点18分,知乎上看到了一首现代诗。《BUT YOU DIDN'T》 最感动你的现代诗 一...
    环形山阅读 172评论 0 2
  • 小时侯看人 街头是看不懂的万花筒 长大后看人 大路是看不清的无底洞 如今还看人 竟看不出了 哪天是晴,哪天是阴 早...
    辛墨xm阅读 241评论 0 1