我开发了一个随机字符串生成器,但它的行为并不像我希望的那样。我的目标是能够运行两次并生成两个不同的四字符随机字符串。但是,它只会生成一个四字符的随机字符串两次。
这是代码及其输出示例:
private string RandomString(int size) { StringBuilder builder = new StringBuilder(); Random random = new Random(); 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(); } // get 1st random string string Rand1 = RandomString(4); // get 2nd random string string Rand2 = RandomString(4); // create full rand string string docNum = Rand1 + "-" + Rand2;
…输出看起来像这样: UNTE-UNTE …但它应该看起来像这样 UNTE-FWNU
如何确保两个明显随机的字符串?
您正在方法中创建 Random 实例,这会导致它在快速连续调用时返回相同的值。我会做这样的事情:
private static Random random = new Random((int)DateTime.Now.Ticks);//thanks to McAden 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(); } // get 1st random string string Rand1 = RandomString(4); // get 2nd random string string Rand2 = RandomString(4); // creat full rand string string docNum = Rand1 + "-" + Rand2;
(您的代码的修改版本)