PHP插槽,生成组合

时间:2012-04-22 20:39:02

标签: php html5 slots

所以我有一系列可能的组合:

$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的大小,一个代表权重,另一个数组代表每个可能的组合,并使用类似这样的脚本,但是不是更短,更有效的方法吗?

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];
}

1 个答案:

答案 0 :(得分:1)

一个数组如何关联可能结果的计数而不是实际位置?

e.g。你做一个跑步,得到类似A / A / B的东西,所以你有2个A,然后看看桌子

$payouts = array(
   2 => array('Bar' => 10, 'Double Bar' => 20, etc...)
   3 => array('Diamond' => 100, 'Bar' => 40, etc...)
);