2012-01-21 11 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*resultresult==25)に等しくします。希望の結果を得るために、乗数を変更する必要があるもの(fixed_multiplier)を見つけるにはどうすればよいですか?ループに必要な乗数を見つける方法は?

result_out = result * fixed_multiplier^1000 

"の力に" ^意味:

+0

、 '結果は* = fixed_multiplier'が1000回の反復の後に私30.322を与えます。これは間違っています、私はそれを約25にしたいと思います。あるいは、1000回の反復の前に、 'result * multiplier == 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) 
関連する問題