我编写了以下方法来帮助我在C#中生成十进制数字的组合:
public static string GenerateCodeNumeric(int length)
{
Random random = new Random();
string characters = "0123456789";
StringBuilder result = new StringBuilder(length);
for (int i = 0; i < length; i++)
{
result.Append(characters[random.Next(characters.Length)]);
}
return result.ToString();
}
这里的问题是这种方法有可能产生两个或更多相同的组合,是否有任何想法可以防止这种情况发生?
我有一个解决这个问题的主张:
但问题是,当我的表格数据繁重时,如果此代码已退出,则需要很长时间才能查看...并且会降低性能......
答案 0 :(得分:2)
这对我来说,我只会增加一个计数器,这是无碰撞的绝对保证。 (如果您需要在不同的地方生成代码,请保留一些固定的数字以区分它们。)
然后,如果您需要看起来随机的代码,则以可逆方式对位进行加扰,以使不同的值保持不同。如果代码足够长,您甚至可以在任意位置插入随机的额外位。
通过这样的程序,这些值是隐含唯一的,并且不需要在事后检查。