2010-12-04 8 views
0

가능한 중복 :이 질문은에 임의의 정수를 생성하는 기능을 감안할 때 http://blog.seattleinterviewcoach.com/2009/02/140-google-interview-questions.html난수 생성

에서 가져
Expand a random range from 1-5 to 1-7

안녕, 을 범위 1에서 5, I 1~5 랜덤 발생기를 사용하여 거의 동일한 확률로 (7)에 모든 난수 1을 생성하는 방법을받지 오전 7

의 범위 1에 임의의 정수를 생성하는 함수를 작성.

누구나 해결할 수 있습니까?

+0

배포가 균일해야합니까? 제공된 함수에서 균일하게 분포합니까? 제공된 기능을 무시할 수 있습니까? :) –

답변

1

주어진 함수가 균일하게 분산 된 숫자를 제공한다고 가정하고 작성해야하는 함수도 균일 분포 숫자를 반환한다고 가정합니다.

do { 
    rand25 = (rand5() - 1) * 5 + rand5; // 1-25 
} while (rand25 > 21); 
return (rand25 - 1)/3 + 1; 
-1

무엇 FUNC에 대한() + FUNC() % 3 :

는 다음 의사 코드 (rejection sampling라고) 표준 기술을 보여?

+0

이 나타났습니다. 확률은 동일해야합니다. 이 솔루션은 배포를 변경합니다. – qutron

+0

이것은'func()'의 배포 속성을 파괴하기 때문에 나쁜 생각입니다. 'func()'에서 '1'또는 '2'를 얻는 것은 '0'을 얻는 것의 두 배입니다. 'func()'는 동일한 분포를가집니다. – bitmask