CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

如何快速的向数据库中写入大量随机不重复的十位码

楼主perilla(紫苏)2003-11-04 01:07:39 在 .NET技术 / C# 提问

我生成的数据需要是随机的无规则的十位数字,类似数码防伪之类的数码,看不出规则无序的。而且数据库中已经有了数据,要保证新生成的随机数都不重复,今后还要向数据库中插入大量这样的数字。  
  希望解决的问题  
  1)生成这样不和已有数据重复的随机数的算法  
  2)如何将大批量(比如1百万条)的数据快速的写入数据库。  
   
  有没有好的解决办法建议,谢谢大家!  
  问题点数:100、回复次数:15Top

1 楼redlion963(狮子)回复于 2003-11-04 01:57:06 得分 0

先生成10位随机数,存成字符串,  
  在用SQL语句到数据库查找,如果有重新生成,如果没有则存入数据库  
  10位随机数,重复的可能性,应该不会让你试很多次的  
   
  在一种方法,可以把数据库10随机数那个字段,读到内存中,就不用SQL语句查数据库了  
  这要看你的程序什么样子的了,机器内存是不是很大,综合考虑  
   
   
  Top

2 楼dldl(做饭我一直用雕牌)回复于 2003-11-04 09:15:22 得分 20

1、c#中有对数据的随机产生,你可以把1到n个连续数存入属组中,然后随机从数组中取出一个数,然后把最后的数和选中的数交换。以此类推,就可以生成随机数咧!  
  2、把大批量的数据写入数据库,还是用DTS的快!Top

3 楼xamcsdn2(知了)回复于 2003-11-04 09:18:27 得分 0

微软的数据库有个全球唯一码。你可以找一下相关资料  
  Top

4 楼perilla(紫苏)回复于 2003-11-04 09:50:48 得分 0

To   redlion963(狮子   :我不是只用一部分数,而是每次需要生成1000万个,需要经常性的生成,每次生成的数据均需要写在数据库中,下次再生成的数不能和他们重复,这是一个持续性的过程,最后可能用到100万万个。  
   
   
  To     xamcsdn2:微软的数据库有个全球唯一码好像是128位的,我现在只能用10位数字,不能用。  
  Top

5 楼running_su(努力中)回复于 2003-11-04 10:29:07 得分 10

up,難啊Top

6 楼realsnow(真雪无香/抵制日货(菜C++鸟))回复于 2003-11-04 10:36:32 得分 10

gz  
  markTop

7 楼atlove(美女程序员)(*****)回复于 2003-11-04 12:11:33 得分 10

最快的方法,通过程序生成10位随机数列表,写到文本文件;再将其导入数据库中Top

8 楼perilla(紫苏)回复于 2003-11-04 22:45:44 得分 0

upTop

9 楼wxy0401(abc)回复于 2003-11-04 23:59:21 得分 10

有个很苯、也许很实用的方法。  
  生成一个数据表,第一字段为将要生成的数据列,第二个字段为辅助列,二个字段的格式均为10位的数字。  
  第一个字段生成从0到底9,999,999,999的数字,第二个字段用随机数填上,然后对第二字段排序,排好序后第一字段就是你要的数列了,没有重复、没有规律。每次取数可从上往下顺序取数。Top

10 楼eric88(保持共产党员先尽兴)回复于 2003-11-05 00:56:57 得分 10

Drop   Sequence   TABLE_SEQ;  
  Create   Sequence   TABLE_SEQ   Increment   By   1    
                Start   with   1   MaxValue   9999999999999999   MinValue   1   NoCycle;  
  Top

11 楼perilla(紫苏)回复于 2003-11-05 14:48:41 得分 0

to   :第二个字段用随机数填上,然后对第二字段排序,:生成这么一大堆随机数加上排序的时间不是太恐怖了?Top

12 楼wxy0401(abc)回复于 2003-11-06 00:44:16 得分 0

与每生成一个随机数都到数据库查找的方法相比,这更适和你的要求,(每次需要生成1000万个,最后可能用到100万万个。)  
  或者你用此方法生成若干2-3位数的随机数队列,然后用这些数列组合成10的数。Top

13 楼wxy0401(abc)回复于 2003-11-06 00:52:47 得分 20

这个问题可转到   “专题开发”-》“数据结构与算法”中去,那里牛人很多.Top

14 楼redlion963(狮子)回复于 2003-11-06 02:36:08 得分 10

或许有这么个算法,每次即将生成的随机数都不会和以前的重复,这样就不用去数据库对比了,而且一次要生成1000万个Top

15 楼noremorse()回复于 2003-11-06 09:58:12 得分 0

10位数字的空间只有   10^10.  
   
  你一次生成10^7个还要经常生成,是很容易重复的。很难解决。Top

相关问题

  • 写入数据库!
  • 怎样随机生成名字不重复的ACCSEE数据库?
  • vc下写入数据库
  • 如何写入数据库?
  • 数据写入数据库
  • 数据库写入问题
  • 数据库写入错误:
  • 写入数据库问题
  • 数据库无法写入
  • 数据库写入问题?

关键词

  • 数据库
  • 字段
  • 数据
  • 数字
  • 解决
  • 随机数
  • 生成
  • 重复
  • 写入
  • 方法

得分解答快速导航

  • 帖主:perilla
  • dldl
  • running_su
  • realsnow
  • atlove
  • wxy0401
  • eric88
  • wxy0401
  • redlion963

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo