読者です 読者をやめる 読者になる 読者になる

数字をきれいに10分割(Perl)

SVM_Lightで10分割交差検定を行いたい、そのために入力データを10個に分割し、10個のデータセットを作りたいと考えています。
(卒論時にそういうことを行うプログラムを作ったのですが、改めて作ってみようかと思っています)
とりあえず、入力データがn個あるとして、それをきれいに10個に分けるということだけやってみました。
"きれいにn個に分ける"とは、例えば7個のデータをきれいに3個に分ける場合、「3,2,2」となります。「4,2,1」や「5,1,1」ではありません。
(伝わりにくい表現ですかね・・・)


"I Love Perl Because I Love Perl"

ソースコード

my $totalDataNum = 25;
my @array= (0,0,0,0,0,0,0,0,0,0);
my $numCount = 0;
my $loopCount = 0;

while($numCount < $totalDataNum){
    for(my $i=0;$i<@array;$i++){
        $array[$i]++;
        $numCount++;

        if($numCount == $totalDataNum){
                $loopCount++;
                last;
        }
    }
    last if($loopCount > 0);
}

print @array,"\n";

出力結果

3333322222

メモ

  • データ個数が少ないと($totalDataNumが10未満だと)変なことになる
  • うまく(正例、負例のバランスを考えて)10分割してくれるPerlプログラムないかな・・・
    • xtnfold.shというものはあるみたいです。

今日やったこと

  • 研究関連
  • 筋トレ(いつもより少ないセット数)

その他

明日からまた一人暮らし。
お正月で体重がどう変化したか楽しみだなー。