《每日工作总结》随机兑换码的生成——15.09.14
随机兑换码的生成
由于项目中需要生成兑换码发放给用户来兑换VIP功能,所以需要一个能够生成重复率低的随机算法,然而才疏学浅,只能想到下面这种简单的方式,但是也还能保证重复率比较低,基本在Mn次中才会出现一次,M表示选用的字符的数量,n表示兑换码的长度,所以个人认为这种方式还是可行的。下面是简单的流程和代码实现。
- 确定兑换码包含的字符集合
- 确定是否添加分隔符,若需要添加,则选用什么符号
- 循环生成满足长度的字符串,根据位置判断是否需要插入分隔符。
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();
}
如果还是觉得这样生成的兑换码不是很保险,可以在每次生成后与已生成的兑换码列表做个比较,如果有重复的则重新生成一遍。
推荐阅读
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 《跨界歌手》:亲情永远比爱情更有泪点
- 诗歌:|诗歌: 《让我们举起世界杯,干了!》
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- 人间词话的智慧
- 《一代诗人》37期,生活,江南j,拨动心潭的一泓秋水
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术
- 书评——《小行星》