シミュレーションループの効率化(プログラム編)

先日に問題はわかったが、プログラムの方がうまく思いつかない。
いままでは、単純に指標の数だけループしており、
それにともなった、比重もループに組み込んで、
単純な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

コメントを残す

メールアドレスが公開されることはありません。