本人想做一个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#