当前位置:编程学习 > C#/ASP.NET >>

本人想做一个32位的数字ID

前16位是时间精确到秒
后16位是随机生成数
希望哪位大侠能给个代码
我原来做的总会出现重复问题
        public string GenerateCheckCodeNum(int codeCount)
        {
            string str = string.Empty;
            long num2 = DateTime.Now.Ticks + this.rep;
            this.rep++;
            Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> this.rep)));
            for (int i = 0; i < codeCount; i++)
            {
                int num = random.Next();
                str = str + ((char)(0x30 + ((ushort)(num % 10)))).ToString();
            }
            return str;
        }
--------------------编程问答-------------------- 我原来做的总会出现重复问题

没用同步lock,DateTime.Now的不是有一个从好像是1883年到现在的秒数吗,不能用吗 --------------------编程问答-------------------- 后16位随机还有重复??
有点晕。。。 --------------------编程问答-------------------- 现在我解决了这个重复的问题了!不过只是暂时解决··
        public string GenerateCheckCodeNum(int codeCount)
        {
            string str = string.Empty;
            long num2 = DateTime.Now.Ticks + this.rep;
            this.rep++;
            Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> this.rep)));
            for (int i = 0; i < codeCount; i++)
            {
                int num = random.Next();
                str = str + ((char)(0x30 + ((ushort)(num % 10)))).ToString();
            }
            if (codeCount == 16)
            {
                str = this.GenerateCheckCodeNum(8) + this.GenerateCheckCodeNum(8);
                return str;
            }
            else
            return str;
        }

谁还有更好的办法啊····· --------------------编程问答-------------------- 16位随机都能重复,这机率是不是大了点。 --------------------编程问答-------------------- 何必那么幸苦啊
创建一个guid把-去掉就32位. --------------------编程问答-------------------- 前面的时间可以单独写, 后面的随机分开也单独写rand.next(1000000000000000,10000000000000000),然后相加 可以不?
呵呵 --------------------编程问答-------------------- 数据库添加个 guid 字段,绝对不重复。 --------------------编程问答-------------------- .....很复杂。。。弄个guid不是可以省很多麻烦事
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,