さまざまな選択肢の確率を含む配列があります。例えば:
配列 1 には {5, 3, 2, 7, 1} の値があります。選択肢「0」は 5/18 の確率で選ばれ、選択肢「1」は 3/18 の確率で選ばれます。「18」は、配列の値の合計です。
これが私のコードです(この場合、8つの選択肢があります):
int i = rand() % sumofvaluesofarray; //edited from array_size
int c = 0;
int sum = 0;
while(c < 8){
sum += array[c];
if(i < sum){
choice = c;
break;
}
c += 1;
}
これはすべて動作しないプログラムの一部ですが、問題はコードのこの部分にあると思われます。何か問題がありますか?とにかく、このコードをより効率的に書く方法はありますか?