0

イベントA、B..Eの[25,25,25,10,15]という特定のイベントが発生する確率を表すdoubleの配列があります。数字の合計は 100 になります。

私の分析を通して、特定のイベントが発生するかどうかの可能性をクロスオフできるようにしたいと考えています。

したがって、イベント E が不可能であることがわかった場合は、そのインデックスを 0 に設定します。合計が 100 になり、各イベントの相対確率が維持されるように、配列を再正規化するにはどうすればよいでしょうか?

C# または Java を使用します。

4

4 に答える 4

2

削除されたイベントの確率をさまざまな方法で再分配できます。たとえば、

  • 比例- 各数値を値p/sum(p)に置き換えます。ここで、 は残りの確率sum(p)の合計です。
  • 均等に - 削除された値を残りのアイテムの数で割り、その結果を残りの確率のそれぞれに追加します。

「正しい」答えは、問題の詳細によって異なります。

于 2012-11-27T13:23:10.520 に答える
0

より一般的な解決策は、配列を正規化して特定の合計を与えることです。

public static void setTotal(double total, double[] values) {
    double sum = 0;
    for (double value : values) sum += value;
    double factor = total / sum;
    for (int i = 0; i < values.length; i++)
        values[i] *= factor;
}

これにより、任意の値を変更して、合計が希望どおりになるようにすることができます(合計がゼロでない場合)

于 2012-11-27T14:01:34.090 に答える
0

確率は同じままであると想定しています(つまり、最初のダブルの新しいものは、おそらくあなたの例では25/85になるはずです)。次に、削除した double を保存し、それで 100 を引き、各 double をそれで割り、100 を掛けます。

Java コード:

double[] doubleArray = new double[] { 25, 25 ,25, 10, 15 }; //or any other array
double temp = 100-doubleArray[4]; //or any other specific value in the array
doubleArray[4] = 0;
for (int i; i<doubleArray.length; i++) {
    doubleArray[i] = doubleArray[i]/temp*100;
}
于 2012-11-27T13:28:46.383 に答える
0
sum = 100 - P(E)
for each event e:
  if e is E:
    P(E) = 0
  else:
    P(e) = P(e)*100/sum
于 2012-11-27T13:21:23.107 に答える