ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

確率の計算

あるアイテム4つから1つ選び出す。アイテムにはそれぞれ選びだされる確率が設定されている。
このような処理を行いたかったので、次のように書いてみた。

int select()
{
    int odds[] = { 15, 30, 20, 35 }; // アイテムそれぞれの確立

    int dice = rand()%100+1; // 1-100までの乱数を得る

    int sum = 0;
    int i = 0;
    for(i=0; i<4; ++i)
    {
        sum += odds[i];
        if (dice <= sum) break;
    }
    return i;
}

これであっているかな。でももっとスマートに書けるような気がするなぁ。
しかし、これではプログラミング言語を学び始めたばかりの人みたいだ。

■3/14 判定が間違っていたのを修正
if (i <= sum ) break; → if (dice <= sum) break;
あとint32をintに、i++を++iに変更