임의로 생성 된 XX00XXX 형식의 문자열을 생성하는 VBA 함수를 만들었습니다. Excel 스프레드 시트에 400000 개가 넘는 일련 번호를 작성하기 위해이 코드를 실행했지만 동일한 문자열에 대한 반복 횟수가 비정상적으로 많습니다. 문자열의 60 % 이상에서 인스턴스가 두 개 이상 (경우에 따라> 250 개)! 나는 약간의 재구성을 기대할 것이다. 그러나이 수준 근처의 아무 곳에도. 내 코드에 문제가 있습니까? 또는 아마도 이것은 추첨을 할 나의 주입니다.VBA 무작위로 생성 된 문자열 반복 - 왜?
Function NewVRN() As String
Dim strOne As String
Dim strTwo As String
Dim strThree As String
Dim strFour As String
Dim strFive As String
Dim strSix As String
Dim strSeven As String
' Initialize the seed using Timer.
Randomize
'Generate random letters
strOne = Chr(Int((90 - 65 + 1) * Rnd) + 65)
Randomize
strTwo = Chr(Int((90 - 65 + 1) * Rnd) + 65)
Randomize
strFive = Chr(Int((90 - 65 + 1) * Rnd) + 65)
Randomize
strSix = Chr(Int((90 - 65 + 1) * Rnd) + 65)
Randomize
strSeven = Chr(Int((90 - 65 + 1) * Rnd) + 65)
Randomize
'Generate random numbers
strThree = Chr(Int((57 - 48 + 1) * Rnd) + 48)
Randomize
strFour = Chr(Int((57 - 48 + 1) * Rnd) + 48)
'Concatenate and build the VRN
NewVRN = strOne & strTwo & strThree & strFour & strFive & strSix & strSeven
End Function
함수가 제 (함수 호출 시점)을 다른 "재료"및 않는 하위의 일부로서 호출은 단순히 셀에 결과를 기록하고 다음 셀을 선택한다. 이 작업은 다른 작업없이 빠르게 연속적으로 수행됩니다. 내가 알 수있는 한, 연속 호출은 일반적으로 다음 호출에서 반복되지 않습니다.
여기에 다른 솔루션을 살펴 보았지만이 특정 문제에 대한 답변은없는 것 같습니다. 사무실에있는 RNG에는 제한이 있다는 것은 인정되지만, 여기에있는 관찰은 극단적이라고 생각합니다. 현대 프로세서에도 문제가 있습니다 (타이머 간격 당 여러 계산)하지만 randomize 문과 함수의 독립적 인 실행으로이를 해결해야합니다.
P. 나는 확률이 최소한의 반복 수를 의미한다는 수락을 통해 임의 순서의 대부분이 유일한 목록을 원했다. 결국 나는 순서 (예 : AA00AAA, AA00AAB 등)에 하나를 추가하는 루프를 만들었습니다. 나는 아직도 내 무작위 발전기가 작동하지 않는 이유를 알고 싶다!
또한 공개 도메인에 고유 한 임의의 숫자 배열을 만드는 솔루션이 있습니다. 정렬되지 않은 문자열과 상당히 많은 볼륨으로 작업한다는 점을 감안할 때 생성 된 문자열을 이전의 불법리스트와 비교하는 것이 실용적이지 않다고 생각합니다. – RandomDave