私は 3 つの IP を持っており、すべての IP には重みがあります。ランダム関数を使用して、その重みに従って IP を返したいと思います。たとえば、3 つの IP がある場合: X は重み 6、Y は重み 4、Z は重み2、Cのランダム関数に応じて、ケースの50%でXを返し、ケースの33%でYを返し、ケースの17%でZを返したい.
このコードは、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 がある場合、特定の数の IP ではなく n 個の IP を処理するようにコードを変更するにはどうすればよいですか?