지난 주에 나는 VBA에서 테스트를 받아야했습니다. 나는 약간의 "게임"을 코딩해야했다. ->Int (100 * Rnd + 1)
VBA Integer vs Long은 1 ~ 100의 범위에서 임의의 숫자가 선택된 숫자와 같은지 검사합니다.
- 는 전화 기능이
- 1 100 (1 포함 100) 사이의 임의의 숫자를 생성 무작위
- (포함 1, 100) 1과 100 사이의 숫자를 선택 :이 규칙이었다
- 임의 번호 = 선택된 번호인지 확인하십시오.
- 5.1 true의 경우, 카운터 + 1을 추가, 게임이
5.2 false의 경우 완료, 인쇄 카운터에 대응하기 위해 +1을 추가, 난 당신의 목표를받을 희망 3.
단계로 돌아가 게임".
정수 (16 비트)로 카운터를 초기화했습니다. 선생님은 카운터가 넘칠 수도 있음을 알려 줬습니다. 그는 오버플로 기회가 적도록 Long (32 비트)을 사용할 것을 권장합니다.
나는 픽업 한 숫자가 생성 된 숫자와 같을 확률이 1 : 100이기 때문에 카운터에서 32000 회 시도하는 것이 거의 불가능하다고 말했다.
그는 대답했다 : 그러나 그것은 아직도 가능하다.
내 질문 :
는 데이터 타입이 정수의 경우 카운터가 오버 플로우 수도 수 있습니까? 그렇다면 기회는 무엇입니까? 없다면 어떻게 증명할 수 있습니까?
왜이 질문은 통계가 아니라 stackoverflow입니까?
간단합니다. 당신이 Rnd 기능과 VBA를 알고 있기 때문에 통계에있는 사람들은 그렇지 않습니다. 당신의 설명에서
랜덤 기능은 당신에게 같은 #의 뒷면을 제공 할 수 있습니다,'당신은 확인 후 항목을 추가하고 수 (100)의 가방에서 일을 복용하고 사전과 함께 실행 한 경우 99을 떠나는 것 아니에요 IsTrueRandom (x는 정수로)'dic.Exists (x)'와 유사합니다. 이렇게하면 답에 맞춰 무언가를 얻을 수 있지만 남은 숫자가 줄어들면 속도가 느려집니다. 선생님이 # 35 번 100 번, # 34000 번, # 20 백만 번 따를 수 있다고 말씀하신 것 같습니다. –