0

いくつかの最後のアプリケーションでは、通常、いくつかの項目の中で与えられる確率を実装することになっていました:

特定のレベルの完了アイテムでユーザーに報酬を与えるX

項目Xは次のいずれかです。

jug => probability 25
glass => probability 50
plate => probability 20
dish => probability 5

これを解決するには、配列を作成し、特定の項目にその確率の回数を入力します。上記の場合、 の配列があり25 elements of jug, 50 glasses and so on.ます。最後にshuffle、配列を数回 {PHP} し、そこからランダムな要素を選択します。

別のアプリケーションでは、値の合計が 100 を超えていたので、最初にその合計から適切なパーセンテージを計算し、次に上記のロジックを使用しました。

これがそのような構造から確率を計算する正しい方法かどうか知りたいですか?

ここSOFでいくつかの問題を経験しましたが、私の場合は何も役に立ちませんでした。

これを行うためのより適切な方法があれば、私に知らせてください

ありがとう

4

2 に答える 2

4

次の値を割り当てるだけです。

$jug = 25;
$glass = 25+50 = 75;
$plate = 75+20 = 95;
$dish = 95+5 = 100

次に、以下の疑似コードのように、100 のランダムを取得し、それがどこに適合するかを判断します。

$jug = 25;
$glass = 75;
$plate = 95;
$dish = 100;
$items = {"jug", "glass", "plate", "dish"};

$rand = random(100);  // Get a random number between 0 and 100

if ($rand < $jug) {
    return items(0);
} elseif ($rand < $glass) {
    return items(1);
} elseif ($rand < $plate) {
    return items(2);
} elseif ($rand < $dish) {
    return items(3);
}

お役に立てれば。

于 2013-04-01T19:43:37.607 に答える
0

私はあなたと同じ方法でこれを行いますが、パーセンテージを計算する必要はありません。100 を超える要素を使用できます。

たとえば、A=80 で B=40 の場合、120 要素の配列を使用できます。

ただし、数学では、要素の数を減らすことができる最大公約数という用語があります。この例では、GCD は 40 であるため、A は 2、B は 1 となり、配列サイズは 3 要素に減少します。たとえば、要素の総数が非常に多い場合に重要になる場合があります。

于 2013-04-01T19:37:52.253 に答える