생성기를 여러 번 호출하더라도 생성된 문자열이 동일하게 나타날 때 무작위 문자열 생성기에서 발생하는 일반적인 문제가 발생합니다. 이 문제는 생성기가 함수 내에서 초기화되어 동일한 무작위 값 세트가 반복적으로 생성된다는 사실에서 비롯됩니다.
고유한 무작위 문자열을 보장하려면 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); // create full rand string string docNum = Rand1 + "-" + Rand2;
이제 RandomString 함수를 두 번 호출하면 두 개의 서로 다른 4자리 문자열을 생성하여 "UNTE-UNTE" 대신 "UNTE-FWNU"와 유사한 출력이 생성됩니다.
위 내용은 내 무작위 문자열 생성기가 계속해서 동일한 문자열을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!