gpt4 book ai didi

c# - 生成十进制的任意组合,确保不生成此组合的副本

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:41:37 24 4
gpt4 key购买 nike

我编写了以下方法来帮助我在 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();
}

这里的问题是这种方法有可能产生两个或更多相同的组合,有什么办法可以防止这种情况发生吗?

我有一个解决这个问题的建议:

  1. 每次我的方法生成代码时,我都会将其存储在数据库中的一个表中,在生成此代码之前,我会查看此表中是否存在该代码。

但这里的问题是当我的表将有大量数据时,如果这段代码已经退出,将需要很长时间才能查看...并且会降低性能...

最佳答案

对我来说,我只会增加一个计数器,这绝对保证不会发生碰撞。 (如果需要在不同的地方生成代码,保留一些固定的数字来区分它们。)

然后,如果您需要代码看起来是随机的,请以可逆的方式对位进行加扰,以便不同的值保持不同。如果代码足够长,您甚至可以在您喜欢的地方随机插入额外的位。

通过这样的过程,值是隐式唯一的,不需要事后检查。

关于c# - 生成十进制的任意组合,确保不生成此组合的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38745105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com