生成一个aleatoire十进制组合,确保不会生成此组合的副本
本文关键字:组合 确保 副本 十进制 一个 aleatoire | 更新日期: 2023-09-27 18:00:05
我写了以下方法来帮助我在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();
}
这里的问题是,这种方法有可能产生两个或多个相同的组合,有什么想法可以防止这种情况发生吗?
我有一个解决这个问题的建议:
- 每次我的方法生成代码时,我都会将其存储在数据库中的一个表中,在生成此代码之前,我会查看该表中是否已经存在该代码
但这里的问题是,当我的表中有大量数据时,如果该代码已经退出,则需要很长时间来查看。。。它会降低性能。。。
如果对我来说,我只会增加一个计数器,这绝对保证不会发生冲突。(如果你需要在不同的地方生成代码,可以保留一些固定的数字来区分它们。)
然后,如果你需要代码看起来是随机的,可以以可逆的方式对比特进行加扰,使不同的值保持不同。如果代码足够长,你甚至可以在你喜欢的地方插入随机的额外比特。
通过这样的过程,值是隐式唯一的,不需要事后检查。