gpt4 book ai didi

c# - 生成一批随 secret 码

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:41 26 4
gpt4 key购买 nike

生成随 secret 码很容易。但是生成批处理比较困难。

    public static string getRandomPassword(int letters, int getallen) {
//int letters = 8;
//int getallen = 5;

char[] letterdeel = new char[letters];
int minGetal = (int)Math.Pow(10, getallen - 1);
int maxGetal = (int)Math.Pow(10, getallen);

string password;
Random r = new Random();
int test = (int)(DateTime.Now.Ticks);
for (int i = 0; i < letters; i++) {
r = new Random((int)(DateTime.Now.Ticks) + i);
bool capital = r.Next(2) == 0 ? true : false;
if (capital) {
letterdeel[i] = (char)r.Next(65, 91);
} else {
letterdeel[i] = (char)r.Next(97, 123);
}
}

password = new string(letterdeel);
password += r.Next(minGetal, maxGetal);

return password;
}

这是我的方法,密码应该是特定的字母数字格式。这工作正常,但是如果我有一个 for 循环从这个方法中提取 100 个密码,在我的数组中我有 5-8 个相同的密码,然后再次有 5-8 个相同的密码。

我知道这是为什么,因为它依赖于随机函数和时钟,但我该如何解决这个问题?

最佳答案

如果您重复调用方法,请将 Random r 移到方法外部。您将在相同的相对时间范围内多次击中它,因此您将生成相同的种子。您还想摆脱下面的行。这是不必要的,并且(再次),with the nature of DateTime.Now ,您将继续生成相同的“随机”数字序列。

r = new Random((int)(DateTime.Now.Ticks) + i); 

关于c# - 生成一批随 secret 码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3814576/

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