N個の値(整数)があります。パーセンテージに関してこれらの値の1つをランダムに選択する最もエレガントな方法を知りたいです。たとえば、3つの値の例の場合:
- 値1は30%の確率で選ばれます
- 値2は12%の確率で選ばれます
- 値3は45%の確率で選ばれます
Javaで開発しているプログラムにはこれが必要ですが、擬似コードアルゴリズムまたは他の言語のコードで問題ありません。
N個の値(整数)があります。パーセンテージに関してこれらの値の1つをランダムに選択する最もエレガントな方法を知りたいです。たとえば、3つの値の例の場合:
Javaで開発しているプログラムにはこれが必要ですが、擬似コードアルゴリズムまたは他の言語のコードで問題ありません。
使用する値を計算せずにこれを行う1つの方法は
double d = Math.random() * 100;
if ((d -= 30) < 0) return 1;
if ((d -= 12) < 0) return 2;
if ((d -= 45) < 0) return 3;
return 4;
提案されたアルゴリズム:
n
)を生成します(ランダムジェネレータが十分に分散されていると仮定します)0
1
n < 0.30
戻り値の場合1
n < 0.42
戻り値の場合2
n < 0.87
戻り値3