質問: min_i) { fill(255, 0, 0); } rectMode(CENTER); rect(x[i], y[i], rect_w[i], rect_h[i]); } } ``` ソースコード ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ランダムな長方形を100個書き、その中から平均値の面積をもつ長方形の色を変える というプログラムを作っています。ある人が全く同じ質問をしていたので、それの回答を 参考にしていたのですが float min=999999;の部分と平均との差が小さい長方形を調べる ところのプログラムの意味がよくわかりません。どうか解説をおねがいします。
回答: **質問の意味** T を矩形の面積と面積の平均の差の絶対値とする。 ``` T = | 矩形の面積(i) - 面積の平均 | ``` T が最小となる i を求めます。平均との差が最小なので、平均に最も近い面積の矩形を探します。これが探索の意味です。 さて、このき T の初期値として 999999 がふさわしいか。と解釈しました。 (T の初期値に探索対象の配列の第一要素を使うことが多いです) **初期値** オリジナルの作者は、T のなかでひとつは 999999 より小さいものがあると想定しています。 強く言えば、どの T も 999999 を超えることはない、と想定して初期値にしています。 長辺+短辺の長さが一定の矩形なかで最も面積が大きいのは正方形。正方形とすると1辺の長さは、 √999999 = 999.999499999875 描画領域のサイズが 999.9 の正方形で、かつ面積の平均が 0 に近いときの T の値を想定しているとも考えられます。 **相応しい初期値** 初期値を定数 999999 にするより、可能な面積の最大値にするほうが合理的です。 ``` 画面に描画できる最大の矩形の面積(width * height) - 面積の平均(average) と 面積の平均(average) を比較して大きいほう。 ``` または ``` 画面に描画できる最大の矩形の面積(width * height) ``` ~~この回答は、質問の意図を汲み取れていないかもしれません。minを求めるアルゴリズムがわからないのなら、コメントするなり質問を編集してください。~~