日期:2014-05-17  浏览次数:20875 次

请教JAVA实现生成网站邀请码
最近在搞学期末项目实践,准备弄个网站邀请码的功能
要生成1000个邀请码,数字跟字母,长度为12,1000个邀请码都不能重复,求教该怎么做啊
本人算法笨笨的

------解决方案--------------------
这看你的邀请码有什么含义了,比如有没有某几位表示什么信息的设定
否则随机生成1000个字符串就是了,或者哪怕是aaaabbbb0001~aaaabbbb1000,也是一种办法啊
------解决方案--------------------
给个思路,new Date获取当前时间,getYear,getMonth、getDate、getHour、getMinute、getSecond,获取到年月日时分s,然后每个用随机数处理下,比如 年* new Random().nextInt(10);月+ new Random().nextInt(10);。。。。然后用StringBuffer连接起来,生成的长度不同,也可以把长度连接或加上去。最后得到的事一串数字,然后写个循环,每2个截取转换成字母,然后将字母连起来,组后在前面或后面加上邀请人的id。在公司,代码不好贴出来。办法是想出来的,只要你敢想,实现不难
------解决方案--------------------
方法很多 1-1000 加上时间戳 还不够 随机在A-Z挑字母补齐12位
------解决方案--------------------
不能重复用map,生成的时候map<k,v>里先查询一下有没有值,没值+,有值表示重复~
------解决方案--------------------
生成1000个还好吧。
用时间戳,其它用别的字符补齐。
用随机数的话可以放到Set里去掉重复的。
就算用自增的数字也可以。每生成一个,自增1,位数不够用随机字符补齐。
------解决方案--------------------
我觉得就是随机码然后+当前服务器日期·就够了~····
------解决方案--------------------
另外一个问题是:
你这1000个邀请码是一次性生成保存在数据库
还是邀请的时候一个一个生成?
一次性的话、就像上面说的获取系统时间、精确到秒或者毫秒
前面不足的用字母补齐、
一个一个地生成的时候、你要是闲麻烦、就直接搞26个字母和
是个数字随机吧、估计重复的可能性不大、