0

こんにちは、私はcのプロジェクトに取り組んでいます

私は 3 つの IP を持っており、すべての IP には重みがあります。ランダム関数を使用して、その重みに従って IP を返したいと思います。たとえば、3 つの IP がある場合: X は重み 6、Y は重み 4、Z は重み2、Cのランダム関数に応じて、ケースの50%でXを返し、ケースの33%でYを返し、ケースの17%でZを返したい.

誰でもこれで私を助けてくれますか?

4

2 に答える 2

0
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
}

メソッドを一般化する方法が明確になるように記述しました。

于 2013-08-22T21:16:18.400 に答える