5

N個の値(整数)があります。パーセンテージに関してこれらの値の1つをランダムに選択する最もエレガントな方法を知りたいです。たとえば、3つの値の例の場合:

  • 値1は30%の確率で選ばれます
  • 値2は12%の確率で選ばれます
  • 値3は45%の確率で選ばれます

Javaで開発しているプログラムにはこれが必要ですが、擬似コードアルゴリズムまたは他の言語のコードで問題ありません。

4

2 に答える 2

13

使用する値を計算せずにこれを行う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;
于 2012-10-01T12:07:29.167 に答える
8

提案されたアルゴリズム:

  • との間で乱数(n)を生成します(ランダムジェネレータが十分に分散されていると仮定します)01
  • n < 0.30戻り値の場合1
  • n < 0.42戻り値の場合2
  • それ以外の場合はn < 0.87戻り値3
  • それ以外の場合は「こんにちは」と言います(あなたの数は100%にはなりません)
于 2012-10-01T11:56:24.873 に答える