무작위 문자열 생성기 복제 출력
목표는 두 개의 서로 다른 4자 무작위 문자열을 생성하는 것입니다. 그러나 현재 코드는 중복 항목을 반환합니다.
근본 원인
근본 원인은 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;
출력 예
수정된 코드는 두 개의 고유한 4자리 임의 문자열을 생성합니다. as:
UNTE-FWNU
다음과 같은 중복 대신:
UNTE-UNTE
클래스 수준에서 Random 인스턴스를 초기화하면 일관된 난수 시퀀스가 사용되어 고유한 결과를 얻을 수 있습니다. 임의의 문자열입니다.
위 내용은 내 무작위 문자열 생성기가 중복된 출력을 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!