2012-01-21 4 views
1
#include <iostream> 
using namespace std; 
int main() { 

    float result = 50.0f; 
    float multiplier = 0.5f; 
    float fixed_multiplier = 1.0f - multiplier * 0.001f; 
    for (int i = 0; i < 1000; ++i) { 
    result *= fixed_multiplier; 
    } 

    cout << result << endl; // 30.322 -- want approximately 25 
} 

1000 회 반복 후 은 multiplier*result (result==25)과 같아야합니다. 원하는 결과를 얻으려면 승수를 수정해야하는 항목 (fixed_multiplier)을 어떻게 찾을 수 있습니까?루프에 필요한 승수를 찾는 방법은 무엇입니까?

result_out = result * fixed_multiplier^1000 

"의 힘을"^ 나타냅니다 :

+0

현재'결과는 * = fixed_multiplier' 나에게 30.322 후, 1000의 반복을 제공합니다. 이것은 잘못되었습니다. 약 25 개를주고 싶습니다. 또는 1000 회 반복하기 전에 결과'승수 == 25 '를 구하십시오. – joshj

답변

5

:

result * fixed_multiplier^1000 = result * multiplier 

원하는 답을 찾을 수 solve this equation 수 있습니다.

당신은 pow 기능을 사용하여 C에서 동일한 결과를 얻을 수 있습니다

fixed_multiplier = pow(multiplier, 0.001); 
2

는 다음과 같은 관계가있다. 간단한 대수가 당신에게주는이 :

귀하의 for 루프이 수학 방정식으로 요약된다
fixed_multiplier = (result_out/result)^(1/1000) 
관련 문제