我遇到的问题是,当我想为我的数据库创建一个id时,我会为此生成一个随机数,不好的是它会被重复。
desc
答案 0 :(得分:1)
如果您只是寻找唯一ID(并且您不需要整数),则可以使用UUID:
String id = Guid.NewGuid().ToString()
如果您需要唯一的整数ID,最好使用数据库生成它们(例如mysql' s AUTO_INCREMENT
)
答案 1 :(得分:0)
简单地说:你不能直接。
System.Random
可以一遍又一遍地生成相同的数字。如果你仍想获得独特的随机性'数字,您需要将生成的数字存储在列表中,然后检查新生成的数字是否在列表中。
using System;
using System.Collections.Generic;
class Program
{
public static int Main(string[] args)
{
var numbers = new List<int>();
Random rnd = new Random();
for (int n = 0; n < 20; n++)
{
int num = rnd.Next(1000, 9999);
for (int i = 0; i < numbers.Count; i++)
{
if (num == numbers[i])
{
while (num == numbers[i])
num = rnd.Next(1000, 9999);
i = -1;
}
}
numbers.Add(num);
}
// Uncomment if you want sorting
// numbers.Sort();
// Print numbers so we can check that every entry is unique
for (int i = 0; i < numbers.Count; i++)
Console.WriteLine("Id: {0}", numbers[i]);
return 0;
}
}
如果之前生成相同的数字,此代码将尝试生成随机数,然后重新启动以使用列表检查数字。非常低效,并且与“边缘”相比效果不佳。数字。 (例如,您尝试生成一个只包含19个随机数的20个条目列表)