모호한 제목의 사과. 내 문제는 다음과 같습니다. w
이 1보다 작은 항목을 가진 벡터 인 경우 두 번째 벡터의 두 배가 v
이고 양수 항목의 수가 1보다 작 으면 (아래 재귀를 사용하여 계산 됨) 두 배인 u
은 양수보다 작습니다. 하나 sum(v)>1-u
까지 재귀부동 소수점 계산
w(i) = RandomNumber(); //A random number from (0,1) - not necessarily uniform
v(i) = v(i-1)*w(i)*(1-w(i-1))/w(i-1);
를 사용 v
연장. 문제는 u
이 매우 작을 수 있고, v(i)
이 (확률 적으로) 감소하기 때문에 너무 작아 질 수 있다는 것입니다. 그리고 우리는 w(i)
을 가까이에 둘 수도 있습니다.
이것을 구현하는 가장 안전한 방법은 무엇입니까? 정확성을위한 포인트 :
예, 아마도 이것은 작은 u에 대한 OK 근사값을 제공합니다 (정확도가 더 좋음을 의미하는 것인가 -> 0?). 나는 그것에 대해 조금 더 생각해야 할 것입니다. – MMM
두 개의 연속 부동 소수점 값 사이의 거리 (float 또는 double)는 값에 따라 다릅니다. 0에 가까울수록 거리가 짧아집니다 (이것은 내부 표현 때문입니다). 유용한 블로그 게시물 목록은 http://randomascii.wordpress.com/category/floating-point/를 참조하십시오. – Asaf
처음 당신을 잘못 읽으 셨습니다 - 최종 합계가 1-u라는 것을 암시한다고 생각하시지 만, 분명히 옳지는 않지만 지금 당신이 의미하는 바를 봅니다. 감사합니다 – MMM