c# - 不重复的随机字符串生成器

标签 c# asp.net random

我一直在使用这个随机字符串生成器。但我的问题是这个随机字符串生成器在重复自己。我听说过使用 shuffle 方法,但我不知道如何在我的代码中实现它。任何帮助将不胜感激。

private static Random random = new Random();
public static string RandomString(int length)
{
    const string chars = "0123456789";
    return new string(Enumerable.Repeat(chars, length)
      .Select(s => s[random.Next(s.Length)]).ToArray());
}

public static string RandomString2(int length)
{
    const string chars = "AB";
    return new string(Enumerable.Repeat(chars, length)
      .Select(s => s[random.Next(s.Length)]).ToArray());
}

然后在页面加载中我实际上调用了我的 2 个方法并将它们组合在一个文本框中。

string dummy = RandomString(1);
string dummy2 = RandomString2(1);
txtTagNumber.Text = dummy2.ToString() + dummy.ToString();

最佳答案

这可能对您有用。

Random random = new Random();
const string numchars = "0123456789";
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
List<string> randStr = new List<string>();
for(int i = 0; i <= 10; i++)
{
    string AlphaRandom = new string(Enumerable.Repeat(chars, 1)
      .Select(s => s[random.Next(s.Length)]).ToArray());

    string NumberRandom = new string(Enumerable.Repeat(numchars, 1)
      .Select(s => s[random.Next(s.Length)]).ToArray());

    if(randStr.Contains(AlphaRandom + NumberRandom))
    {
        i--;
    }
    else
    {
        randStr.Add(AlphaRandom + NumberRandom);
        Console.WriteLine(randStr[i]);
    }
}

创建了一个随机类型的 random,然后取 2 个字符串,一个用于字母,另一个用于数字。创建了一个字符串列表以将所有生成的随机字符串添加到其中。在循环中,我试图生成 10 个随机字符串。检查随机字符串列表是否包含先前生成的字符串。如果是,则减少 i 的值,这样它仍会生成 10 个字符串。如果没有找到匹配项,那么随机字符串将被添加到列表中。

希望对你有帮助

关于c# - 不重复的随机字符串生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40733191/

相关文章:

python - 比较使用随机数生成的 Matlab 和 Numpy 代码

c# - 将空值传递给日期时间? parameter 获取用随机值填充的参数

c# - 开始收到错误: Error signing assembly -- Unknown error (8013141c)

c# - 无法在 DOM 中保留自定义属性?

c# - 列表包含 linq 中的 ID

c++ - map 中的随机元素

C# - 将 ListView 列中的文本转换为密码字符

c# - asp.net 从数据集中获取单个值

asp.net - JSP/JSF 转换为 ASP.NET

c++ - 为 C++ 类播种 rand()