如何制作长度为5的随机数字和字母串?

可能重复:
这是生成一串随机字符的好方法吗?
如何在C#中生成随机的8个字符,字母数字字符串?

这是我到目前为止的代码。

private void button1_Click(object sender, EventArgs e) { string rand1 = RandomString(5); string rand2 = RandomString(5); string rand3 = RandomString(5); string rand4 = RandomString(5); string rand5 = RandomString(5); textBox1.Text = rand1 + "-" + rand2 + "-" + rand3 + "-" + rand4 + "-" + rand5; } private static Random random = new Random((int)DateTime.Now.Ticks); private string RandomString(int Size) { StringBuilder builder = new StringBuilder(); char ch; for (int i = 0; i < Size; i++) { ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))); builder.Append(ch); } return builder.ToString(); } 

但它只是创建一个5个字符的随机字符串。 我希望它创建一个由5个字符和整数组成的字符串。 我该怎么办? 提前致谢!

使用输入数组从以下位置绘制值:

 private static string RandomString(int length) { const string pool = "abcdefghijklmnopqrstuvwxyz0123456789"; var builder = new StringBuilder(); for (var i = 0; i < length; i++) { var c = pool[random.Next(0, pool.Length)]; builder.Append(c); } return builder.ToString(); } 

或者(不可避免的)Linq解决方案:

 private static string RandomString(int length) { const string pool = "abcdefghijklmnopqrstuvwxyz0123456789"; var chars = Enumerable.Range(0, length) .Select(x => pool[random.Next(0, pool.Length)]); return new string(chars.ToArray()); } 

从jon双向飞碟的回答中复制… https://stackoverflow.com/a/976674/67824

 Random rand = new Random(); public const string Alphabet = "abcdefghijklmnopqrstuvwyxzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; public string GenerateString(int size) { char[] chars = new char[size]; for (int i=0; i < size; i++) { chars[i] = Alphabet[rand.Next(Alphabet.Length)]; } return new string(chars); } 

更换

 ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))); 

通过

 string chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ch=chars[random.Next(chars.Length)]; 

请注意,您的代码不会创建不可预测的随机字符串。 特别是只有20亿可能的结果,如果您的计算机经常重新启动,其中一些比其他更可能。

如果您想要不可预测的随机字符串,则应使用RNGCryptoServiceProvider 。 你可以在https://stackoverflow.com/a/1344255/445517上做一个例子,你只需要添加连字符。