在后续生成过程中怎么保证尽量和已生成的不重复
没这方面的思路
8位也行
10 个解决方案
#1
<script>
var arr = [];
while (true) {
var num = parseInt(Math.random()*100+1);
if(arr.indexOf(num) == -1){
arr[arr.length] = num;
}
if (arr.length>=6) {
break;
}
}
console.log(arr);
</script>
var arr = [];
while (true) {
var num = parseInt(Math.random()*100+1);
if(arr.indexOf(num) == -1){
arr[arr.length] = num;
}
if (arr.length>=6) {
break;
}
}
console.log(arr);
</script>
#2
也可以引用生成当前时间的方法生成数字这个思路
#3
每次生成之后都用数组或哈希表之类的记录下来,下次生成时判断哈希表中是否有相同内容,有则重新生成数字并再次判断
#4
存在一个这样的问题,因为数据库放的6位数,后期生成新的数时都要和数据库数据库里的对比,效率很低
#5
我用了一个set集合存放数据库已有的随机数,然后往里添加一个新的随机数,判断如果size()变大了就证明生成的不是重复的,如果不是就重新生成,但这样效率很低,并且会莫名的卡死
#6
受教,当时没想那么多
#7
楼主可以看看我写的博客
http://blog.csdn.net/qq_26106607/article/details/68289854
http://blog.csdn.net/qq_26106607/article/details/68289854
#8
先建个表
id自增,str_rnd为6位或者8位,往这个表里填充随机数字,例如10万个不重复的随机数字
要用的时候,顺序从这个表中取出str_rnd
id自增,str_rnd为6位或者8位,往这个表里填充随机数字,例如10万个不重复的随机数字
要用的时候,顺序从这个表中取出str_rnd
#9
创建数组生成全部六位数,每次用提取一个删除
#10
public static void main(String[] args) {
//创建一张表table,每次生成一条之后,查询一下表中是否已存在
//这样的话,数据越来越多,后面就挺麻烦的,判断多次才能取到一个表中不存在的
String result = new Test().getRandom();
System.out.println(result);
//建议一次性在数据库表中插入多条数据(如10000条),
//表名table、主键自增长id、随机数:randoms,编写程序
//执行insert 语句插入
//然后创建一个sequence,从1开始,步数为1
//select randoms from table where id = (select sequence.nextval from dual);
}
public String getRandom(){
String result = "";
//下面的6改成8就是8位随机数字
while (result.length() < 6) {
String str = String.valueOf((int)(Math.random()*10));
if(result.indexOf(str) == -1){
result += str;
}
}
return result;
}
#1
<script>
var arr = [];
while (true) {
var num = parseInt(Math.random()*100+1);
if(arr.indexOf(num) == -1){
arr[arr.length] = num;
}
if (arr.length>=6) {
break;
}
}
console.log(arr);
</script>
var arr = [];
while (true) {
var num = parseInt(Math.random()*100+1);
if(arr.indexOf(num) == -1){
arr[arr.length] = num;
}
if (arr.length>=6) {
break;
}
}
console.log(arr);
</script>
#2
也可以引用生成当前时间的方法生成数字这个思路
#3
每次生成之后都用数组或哈希表之类的记录下来,下次生成时判断哈希表中是否有相同内容,有则重新生成数字并再次判断
#4
<script>
var arr = [];
while (true) {
var num = parseInt(Math.random()*100+1);
if(arr.indexOf(num) == -1){
arr[arr.length] = num;
}
if (arr.length>=6) {
break;
}
}
console.log(arr);
</script>
存在一个这样的问题,因为数据库放的6位数,后期生成新的数时都要和数据库数据库里的对比,效率很低
#5
每次生成之后都用数组或哈希表之类的记录下来,下次生成时判断哈希表中是否有相同内容,有则重新生成数字并再次判断
我用了一个set集合存放数据库已有的随机数,然后往里添加一个新的随机数,判断如果size()变大了就证明生成的不是重复的,如果不是就重新生成,但这样效率很低,并且会莫名的卡死
#6
<script>
var arr = [];
while (true) {
var num = parseInt(Math.random()*100+1);
if(arr.indexOf(num) == -1){
arr[arr.length] = num;
}
if (arr.length>=6) {
break;
}
}
console.log(arr);
</script>
存在一个这样的问题,因为数据库放的6位数,后期生成新的数时都要和数据库数据库里的对比,效率很低
#7
楼主可以看看我写的博客
http://blog.csdn.net/qq_26106607/article/details/68289854
http://blog.csdn.net/qq_26106607/article/details/68289854
#8
先建个表
id自增,str_rnd为6位或者8位,往这个表里填充随机数字,例如10万个不重复的随机数字
要用的时候,顺序从这个表中取出str_rnd
id自增,str_rnd为6位或者8位,往这个表里填充随机数字,例如10万个不重复的随机数字
要用的时候,顺序从这个表中取出str_rnd
#9
创建数组生成全部六位数,每次用提取一个删除
#10
public static void main(String[] args) {
//创建一张表table,每次生成一条之后,查询一下表中是否已存在
//这样的话,数据越来越多,后面就挺麻烦的,判断多次才能取到一个表中不存在的
String result = new Test().getRandom();
System.out.println(result);
//建议一次性在数据库表中插入多条数据(如10000条),
//表名table、主键自增长id、随机数:randoms,编写程序
//执行insert 语句插入
//然后创建一个sequence,从1开始,步数为1
//select randoms from table where id = (select sequence.nextval from dual);
}
public String getRandom(){
String result = "";
//下面的6改成8就是8位随机数字
while (result.length() < 6) {
String str = String.valueOf((int)(Math.random()*10));
if(result.indexOf(str) == -1){
result += str;
}
}
return result;
}