随机6位纯数字不重复怎么做

xuanzangbuqima 2017-05-06 04:18:50
生成随机的6位纯数字作为ID,
在后续生成过程中怎么保证尽量和已生成的不重复
没这方面的思路
8位也行
...全文
2625 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
leaveeel 2017-09-05
  • 打赏
  • 举报
回复
创建数组生成全部六位数,每次用提取一个删除
自由自在_Yu 2017-09-05
  • 打赏
  • 举报
回复
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;
	}
hongmei85 2017-09-04
  • 打赏
  • 举报
回复
先建个表 id自增,str_rnd为6位或者8位,往这个表里填充随机数字,例如10万个不重复的随机数字 要用的时候,顺序从这个表中取出str_rnd
小林子林子 2017-09-04
  • 打赏
  • 举报
回复
楼主可以看看我写的博客 http://blog.csdn.net/qq_26106607/article/details/68289854
前端很忙 2017-05-06
  • 打赏
  • 举报
回复
引用 4楼我是你的主体 的回复:
[quote=引用 1 楼 Bs__Q 的回复:] <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位数,后期生成新的数时都要和数据库数据库里的对比,效率很低[/quote]受教,当时没想那么多
xuanzangbuqima 2017-05-06
  • 打赏
  • 举报
回复
引用 3 楼 jslang 的回复:
每次生成之后都用数组或哈希表之类的记录下来,下次生成时判断哈希表中是否有相同内容,有则重新生成数字并再次判断
我用了一个set集合存放数据库已有的随机数,然后往里添加一个新的随机数,判断如果size()变大了就证明生成的不是重复的,如果不是就重新生成,但这样效率很低,并且会莫名的卡死
xuanzangbuqima 2017-05-06
  • 打赏
  • 举报
回复
引用 1 楼 Bs__Q 的回复:
<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位数,后期生成新的数时都要和数据库数据库里的对比,效率很低
天际的海浪 2017-05-06
  • 打赏
  • 举报
回复
每次生成之后都用数组或哈希表之类的记录下来,下次生成时判断哈希表中是否有相同内容,有则重新生成数字并再次判断
前端很忙 2017-05-06
  • 打赏
  • 举报
回复
也可以引用生成当前时间的方法生成数字这个思路
前端很忙 2017-05-06
  • 打赏
  • 举报
回复
<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>

10,612

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧