我有以下代碼:爲什麼這個C++函數產生混沌輸出?
int main (int argc, char **argv){
double lambda = 4;
double x = .2;
for (int i=1; i<=30; i++)
{
printf("%.5f \n", x);
x = lambda * x * (1-x);
}
}
即輸出以下:
0.20000 0.64000 0.92160 0.28901 0.82194 0.58542 0.97081 0.11334 0.40197 0.96156 0.14784 0.50392 0.99994 0.00025 0.00098 0.00394 0.01568 0.06174 0.23173 0.71212 0.82001 0.59036 0.96734 0.12638 0.44165 0.98638 0.05374 0.20342 0.64815 0.91221
我的問題是:如何在輸出值變化的每一次迭代for循環如果變量「i」不是for循環中「x」計算的一部分?
「x」正在根據自己以前的值進行更改。 「我」只是一個計數器應重複計算多少次。 –
它給予完美的結果。沒有看到任何問題。 –
[進一步閱讀](http://www.cs.utsa.edu/~wagner/pubs/logistic/remarks.pdf)。在數學上,如果我們以「x」非理性開始,這會產生無限序列的不同隨機數。顯然,這不能被浮點複製(因爲它們都是有理性的),並且論文討論了一些處理浮點錯誤的方法。 –