0

だから私は可能な組み合わせの配列を持っています:

$faces = array ('Bar', 'Cherry', 'Lemon', 'Seven', 'DoubleBar', 'TripleBar');

そして、一連の支払い

$payouts = array (
'Bar|Bar|Bar' => '5', 
'Double Bar|Double Bar|Double Bar' => '10',
'Triple Bar|Triple Bar|Triple Bar' => '15', 
'Cherry|Cherry|Cherry' => '20',
'Seven|Seven|Seven' => '70',
'Seven|Any|Any' => '70',
'Diamond|Diamond|Diamond' => '100',
);

そして、すべてのホイール (合計 3 つ) の配列で、Seven|Any|Any が適切に機能する重み付けされたランダムな組み合わせを作成するにはどうすればよいですか?

サイズが 6^3 の 2 つの配列を 1 つは重みを表し、もう 1 つはすべての可能な組み合わせを表し、このスクリプトのようなものを使用して作成できることはわかっていますが、もっと短くて効率的な方法はありませんか?

function weighted_random_simple($values, $weights){
    $count = count($values);
    $i = 0;
    $n = 0;
    $num = mt_rand(0, array_sum($weights));
    while($i < $count){
        $n += $weights[$i];
        if($n >= $num){
            break;
        }
        $i++;
    }
    return $values[$i];
}
4

1 に答える 1

1

実際の位置ではなく、可能な結果の数を相関させる配列はどうですか?

たとえば、ランを実行し、A/A/B のような値を取得すると、A が 2 つになり、表を調べます。

$payouts = array(
   2 => array('Bar' => 10, 'Double Bar' => 20, etc...)
   3 => array('Diamond' => 100, 'Bar' => 40, etc...)
);
于 2012-04-22T20:45:08.597 に答える