可能重复:
Is this a good way to generate a string of random characters?
How can I generate random 8 character, alphanumeric strings in C#?
这是我到目前为止的代码。
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个字符和整数组成的字符串。 我该怎么做?提前致谢!
答案 0 :(得分:43)
使用输入数组从以下位置绘制值:
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());
}
答案 1 :(得分:19)
从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);
}
答案 2 :(得分:0)
替换
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处做一个例子,你只需要添加连字符。