随机字符串生成器复制输出
您的目标是生成两个不同的四字符随机字符串。但是,您当前的代码返回重复项。
根本原因
根本原因在于 RandomString 方法中 Random 实例的初始化。每次调用该方法都会创建一个新的 Random 实例,从而产生相同的随机数序列。
解决方案
为了确保两个唯一的随机字符串,请将初始化移动方法外部的 Random 实例进入类级别。这可确保在类的整个生命周期中使用单个实例。
修改后的代码
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(); } // 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-FWNU
而不是重复的:
UNTE-UNTE
通过在类级别初始化 Random 实例,您可以确保使用一致的随机数序列,从而产生唯一的随机字符串。
以上是为什么我的随机字符串生成器会产生重复的输出?的详细内容。更多信息请关注PHP中文网其他相关文章!