あるアイテム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に変更