随机生成唯一的7位数字,作为用户的唯一标识 20C

0-9之间的数字,随机生成一个7位数,保存入数据库,此数据不能和以前的数据重复,唯一性

26个回答

最简单的,就是从0开始自动增长编号。7位数字随机生成,无论什么算法,在你的数据量超过1000万以后肯定重复。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复走去哪里: 那就把你的数据列作为主键或者唯一约束。然后生成一个随机数,插入。如果碰巧重复,就会丢出异常,那么你再重复这个过程,直到插入成功。因为你数据量小,所以绝大多数情况下,一次就插入了,偶尔2次。这个办法不适合你的数据将要接近1000万,那样会要尝试很多次,就不高效了,但是如果小于100万,完全可以用。
接近 3 年之前 回复
qq_36917043
走去哪里 我数据量小,那个不用考虑
接近 3 年之前 回复

1,新建一个数组放0-7
2.根据这个数组生成随机数
3,。判断这个随机数不和之前的重复即可

a499477783
「已注销」 回复走去哪里: 数据量大的时候不是一直判断和生成,队效率的影响很大
接近 3 年之前 回复
qq_36917043
走去哪里 就判断和数据库中保存的数据是否重复,如果数据是百万的数据,效率影响特别大吧
接近 3 年之前 回复

比如id给他加个自增,位数不够前面补0,

qq_36917043
走去哪里 哥,现在不想这样子解决问题
接近 3 年之前 回复

用UUID不是比这个方便么。

qq_36917043
走去哪里 那满足不了接口的要求啊,7位数字
接近 3 年之前 回复

他们说的自增是一种方法,我记得有一个函数可以生成随机数,并且可以设置他的属性,设置之后,每次的随机数都不会重复,你可以百度一下那个属性是什么?我记得不太清楚了 ,很抱歉,但是我确定有!

使用redis incr 去生成这个数字 ,还能在高并发的情况下正常

其实我觉的想要不重复,首先保证有一定的规律会好一点,比如递增之类的。
不过要是觉得递增不合适,可以试试根据保存时的时间戳来生成一个伪随机的。
其实我觉的可以参考一下移动运营商选手机号之类的方法,在一个地方把这个区间所有的值都保存好,每次随机抽取一个。

建议使用 UUID,如果自己要实现无重复生成随机数据需要加入时间戳

可以使用java或者是其他的编程工具自带生成随机的数字,选择对这个数字操作,转为string类型,之后截取7位就可以了呀

你可以利用时间戳呀,对不对

共26条数据 1 3 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问