| Top Page | プログラミング | Perl 目次 | 索引 |
# gen_temp_series.pl 仮想の温度データを作る. $day_min = -3.0; # 日最低気温の初期値 $day_max = 5.0; # 日最高気温の初期値 $var = 0; # 日ごとのランダムな変動 for ($i_day = 0; $i_day $lt; 60; $i_day++) { # 60日間にわたって計算 $var = (0.5 * $var + rand(6.0) - 3.0) / 1.5; # 6度の幅 (-3, 3.0] でランダムな変動 # 前の値も 1/3 だけ加味して連続性を表現 for ($i_hr = 0; $i_hr $lt; 12; ++$i_hr) { # 最低気温から最高気温まで 12時間で変化 # 三角関数で日内の温度変化パターンを表現 ( cos() に与える角度はラジアン) $temp = $day_min + ($day_max - $day_min) / 2.0 * (1.0 - cos(($i_hr / 12.0) * 3.14)); printf "%.1f\n", $temp; # 温度を出力. } $day_min = $i_day * 0.15 - 2.0 + $var; # 最低気温を再計算 $var = (0.5 * $var + rand(6.0) - 3.0) / 1.5; # 6度の幅でランダムな変動 for ($i_hr = 0; $i_hr $lt; 12; ++$i_hr) { # 最高気温から最低気温まで 12時間で変化 $temp = $day_max - ($day_max - $day_min) / 2.0 * (1.0 - cos(($i_hr / 12.0) * 3.14)); printf "%.1f\n", $temp; # 温度を出力. } $day_max = $i_day * 0.20 + 5.0 + $var; # 最低気温を再計算 }