2 ab721772786 ab721772786 于 2016.04.11 10:15 提问

.net怎样在最短时间内生成大量唯一 不重复的无规则的乱码(防伪码或订单号)? 30C

如9位唯一不重复的无规则数字乱码:250242847,460010672,753125430 ............
要求:
1,插入到数据库,并且每插入一批数字乱码到数据库都检查与上一批的不重复。
2,性能效率快,插入几百万条乱码到数据库不用1分钟。
哪位大神做过相关的例子啊,有什么好算法解决啊。

6个回答

weixin_34615687
weixin_34615687   2016.04.11 10:28

有随机数码随机数码生成软件

ab721772786
ab721772786   2016.04.11 10:37

@weixin_34615687

对网上是有这种软件,但是我想自己开发一个自己用的。

qq_26714389
qq_26714389   2016.04.11 10:51

写过哈希桶吗?数据库进库前用哈希桶过滤一下

o527883184
o527883184   2016.04.11 11:19

前面可以使用时间戳精确到毫秒 后面 random函数 定义一下返回类型 就可以 不会重复(重复几率特别小)

zuoming120
zuoming120   2016.04.11 16:57

我们以前的防伪码做过16位的,其实这种肯定不会重复的,比如你的随机数如果是9位,那出现重复的时候是所有的随机数生成完之后才出现,
所以前期不要判断。另外生成的时候建议使用txt,然后让程序去入库,入库不要采用insert,最好采用sql提供的数据导入。

guo_ang
guo_ang   2016.04.11 20:59

一般往数据库插入数据时,为了保证主键唯一不重复,常用的就是UUID,你可以搜下。UUID它保证对在同一时空中的所有机器都是唯一的,有32位和16位的。关键是大部分软件包和数据库都提供生成UUID的API接口,不用自己去写了。
你说的9位纯数字的码如果随机生成的话,而且要生成几百万条,一定会有重复的,而且重复的概率还挺大,除非你在生成后再加上去重算法,不过这样很低效的。
如果你一定要用数字的话,建议可以使用16位的UUID,然后把十六进制的UUID转化成十进制的数字,但是位数肯定比16位要多。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!