| 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; # 最低気温を再計算
}