목표는 각각 4개의 문자로 구성된 두 개의 서로 다른 무작위 문자열을 생성하는 것입니다. 그러나 현재 코드는 두 개의 동일한 문자열을 생성합니다.
이 문제는 RandomString 메서드 내에서 새로운 Random 인스턴스를 생성하는 데서 발생합니다. 이 인스턴스는 호출할 때마다 초기화되므로 동일한 일련의 난수를 생성하여 중복 문자열이 생성됩니다.
두 개의 고유한 문자열을 보장하려면 Random 인스턴스를 보장해야 합니다. 한 번만 생성됩니다. 인스턴스를 정적으로 만들고 현재 시간(틱 단위)과 같은 시드 값을 사용하여 초기화하면 됩니다.
private static Random random = new Random((int)DateTime.Now.Ticks);
인스턴스를 정적으로 만들고 시드를 사용하여 난수를 보장합니다. 아래 수정된 코드에 설명된 것처럼 RandomString 메서드를 호출할 때마다 시퀀스가 다릅니다.
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;
이러한 수정을 통해 코드는 이제 각각 두 개의 고유한 임의 문자열을 생성합니다. 실행되는 시간입니다.
위 내용은 내 무작위 문자열 생성기가 동일한 문자열을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!