C#-从数组到文本框的随机输出

时间:2019-01-30 17:55:56

标签: c# arrays

我对数组有点陌生,我制作了一个char数组(其中有174种东西),但我不知道如何以随机方式输出它。我正在尝试为系统创建安全代码。我想从那个174个char数组中输出13个char到一个文本框中,但是我不明白我的逻辑。先感谢您!以下是每次按钮单击仅输出1个字符的代码:

Random rnd = new Random();
int randomnum = rnd.Next(0, 174);
for (int x = 0; x <= 13; x++)
{
    textBox11.Text = chararray[randomnum];
}

2 个答案:

答案 0 :(得分:2)

您的代码几乎在其中,但存在一些问题:

  1. 您需要将新字符附加到字符串的末尾,就像直接设置Text值一样。您可以使用+=而不是=轻松地做到这一点。

  2. 您需要为循环的每次迭代选择不同的随机字符,因此将调用移至.Next内的for

将其放在一起,您将得到以下内容:

Random rnd = new Random();

for (int x = 0; x <= 13; x++)
{
    int randomnum = rnd.Next(0, 174);
    textBox11.Text += chararray[randomnum];
}

但是请注意,如果这是出于安全目的,那么使用Random并不是很好。你或许应该使用类似RNGCryptoServiceProvider。例如:

using (var rng = new RNGCryptoServiceProvider())
{
    byte[] password = new byte[10];
    rng.GetBytes(password);
    textBox11.Text = Convert.ToBase64String(password).Remove(13);
}

答案 1 :(得分:1)

我已附上此代码工作的屏幕截图。我有一个小错字

这将随机更改种子

int seed = 1;

创建Random的实例,我们不需要每次使用时都重新创建它

Random r = new Random(seed);

这只会初始化字符

char[] _myChars = new char[170];
for(var i = 0; i < _myChars.Length; i++)
{
    _myChars[i] = (char)(i%26 + 65);
}

这是您要查找的查询,它将查询字符并以r.Next()的随机顺序对它们进行排序

var output = _myChars.OrderBy(o => r.Next()).Take(13).ToList();

这仅用于显示输出,您想在文本框中使用输出

for(var i = 0; i < output.Count; i++)
{
    Console.WriteLine(output[i]);
}
Console.ReadLine();

Working code