随机化字符串并添加到列表框

时间:2015-12-23 04:18:53

标签: c# string winforms list random

我无法随机化X字符串并将其添加到我的listbox。它不断地反复添加相同的字符串。我希望它为每个字符串添加1行。如果我说金额是11,它只会生成一个字符串并将其添加11次到listbox。我做错了什么?

这是我的代码:

for (int i = 0; i < amount; i++)
        {

            Random adomRng = new Random();
            string rndString = string.Empty;
            char c;

            for (int t = 0; t < 8; t++)
            {
                while (!Regex.IsMatch((c = Convert.ToChar(adomRng.Next(48, 128))).ToString(), "[a-z0-9]")) ;
                rndString += c;
            }

            listBox1.Items.Add(rndString);
        }

2 个答案:

答案 0 :(得分:2)

Random adomRng = new Random();
for (int i = 0; i < amount; i++)
{
    string rndString = string.Empty;
    char c;
    for (int t = 0; t < 8; t++)
    {
        while (!Regex.IsMatch((c = Convert.ToChar(adomRng.Next(48, 128))).ToString(), "[a-z0-9]")) ;
        rndString += c;
    }
    listBox1.Items.Add(rndString);
}

random初始化代码放在循环之外,它会得到正确的结果

说明:在短时间内创建多个新的随机对象(让我们说在for循环中)将始终为您提供相同的输出,因为它将使用当前时间戳随机种子

答案 1 :(得分:0)

您几乎就在那里,只需在代码中进行两处简单的更改即可实现目标:

for (int t = 0; t < 8; t++)
 {
   rndString =""; //Change 1
   while (!Regex.IsMatch((c = Convert.ToChar(adomRng.Next(48, 128))).ToString(), "[a-z0-9]")) ;
   rndString += c;
   listBox1.Items.Add(rndString);// change  2
 }