问题描述
- .net怎样在最短时间内生成大量唯一 不重复的无规则的乱码(防伪码或订单号)? 30C
- 如9位唯一不重复的无规则数字乱码:250242847,460010672,753125430 ............
要求:
1,插入到数据库,并且每插入一批数字乱码到数据库都检查与上一批的不重复。
2,性能效率快,插入几百万条乱码到数据库不用1分钟。
哪位大神做过相关的例子啊,有什么好算法解决啊。
解决方案
有随机数码随机数码生成软件
解决方案二:
@weixin_34615687
对网上是有这种软件,但是我想自己开发一个自己用的。
解决方案三:
写过哈希桶吗?数据库进库前用哈希桶过滤一下
解决方案四:
前面可以使用时间戳精确到毫秒 后面 random函数 定义一下返回类型 就可以 不会重复(重复几率特别小)
解决方案五:
我们以前的防伪码做过16位的,其实这种肯定不会重复的,比如你的随机数如果是9位,那出现重复的时候是所有的随机数生成完之后才出现,
所以前期不要判断。另外生成的时候建议使用txt,然后让程序去入库,入库不要采用insert,最好采用sql提供的数据导入。
解决方案六:
一般往数据库插入数据时,为了保证主键唯一不重复,常用的就是UUID,你可以搜下。UUID它保证对在同一时空中的所有机器都是唯一的,有32位和16位的。关键是大部分软件包和数据库都提供生成UUID的API接口,不用自己去写了。
你说的9位纯数字的码如果随机生成的话,而且要生成几百万条,一定会有重复的,而且重复的概率还挺大,除非你在生成后再加上去重算法,不过这样很低效的。
如果你一定要用数字的话,建议可以使用16位的UUID,然后把十六进制的UUID转化成十进制的数字,但是位数肯定比16位要多。
时间: 2024-10-30 18:47:56