> 백엔드 개발 > C++ > 내 무작위 문자열 생성기가 계속해서 동일한 문자열을 반환하는 이유는 무엇입니까?

내 무작위 문자열 생성기가 계속해서 동일한 문자열을 반환하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-05 09:24:38
원래의
572명이 탐색했습니다.

Why Does My Random String Generator Keep Returning the Same String?

동일한 문자열을 반환하는 무작위 문자열 생성기

생성기를 여러 번 호출하더라도 생성된 문자열이 동일하게 나타날 때 무작위 문자열 생성기에서 발생하는 일반적인 문제가 발생합니다. 이 문제는 생성기가 함수 내에서 초기화되어 동일한 무작위 값 세트가 반복적으로 생성된다는 사실에서 비롯됩니다.

해결책

고유한 무작위 문자열을 보장하려면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿