我有一个包含不同选择概率的数组。例如:
数组 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;
}
这都是非工作程序的一部分,但是我怀疑问题出在这部分代码上。有什么问题吗?有没有更有效地编写这段代码?