先日に問題はわかったが、プログラムの方がうまく思いつかない。
いままでは、単純に指標の数だけループしており、
それにともなった、比重もループに組み込んで、
単純な10重のループになっていた。
必要な3重ループを2つに編成しないといけないが、
5C3のループをどうするか・・。
おそらく今までのプログラム人生の中で、幾度と無く組んでいるはずであるが、
覚えているはずものなく、ソースを探すくらいなら、自分で考えることにする。
(ロジックは自分で考えるのが好きで、人のロジックを持ってくるのは好きでないので・・)
・・・・
結局、必要な5C3は、
for ( my $loop1 = 0 ; $loop1 <= 2 ; $loop1++ ) {
for ( my $loop2 = $loop1 + 1 ; $loop2 <= 3 ; $loop2++ ) {
for ( my $loop3 = $loop2 + 1 ; $loop3 <= 4 ; $loop3++ ) {
で、ループさせて、生成。
これで、$loop1から3に、1から5の組み合わせが入る。
これを、
foreach my $valwk1 ( @{ $all_val[$loop1] } ) {
$val[$loop1] = $valwk1;
foreach my $wariwk1 (@loop_cnt) {
$wari[$loop1] = $wariwk1;
みたいな、感じで3重のループをさせて、
実際のシミュレーションのサブルーチンには、
$val $wari を、0から4の5つを、引き渡せば、今までの処理が生かせる。
そんな感じで、テスト・・・
おーー早い。
計測してみると、従来の10分の1くらいの時間。
内容も特に問題ないようである。
先日の1日以上にわたるテストは無駄ということであるが、
それがないと、今回の改良には至らなかったので、よかったとする。
これなら、1日で全銘柄のシミュレーションがすませそうである。
とりあえず、今日のところは、このシミュレーションを起動して、
お出かけすることにする。(^^v