我有 3 个 IP,每个 IP 都有一个权重,我想使用随机函数根据其权重返回 IP,例如,如果我们有 3 个 IP:X 权重为 6,Y 权重为 4,Z 权重2,我想在 50% 的情况下返回 X,在 33% 的情况下返回 Y,在 17% 的情况下返回 Z,这取决于 C 中的随机函数。
此代码适用于 3 个 IP 的情况:
double r = rand() / (double)RAND_MAX;
double denom = 6 + 4 + 2;
if (r < 6 / denom) {
// choose X
} else if (r < (6 + 4) / denom) {
// choose Y
} else {
// choose Z
}
如果我有 n 个 IP,如何修改代码以处理 n 个 IP 而不是特定数量的 IP?