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

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 的结果,因此您有 2 个 A,然后查看表格

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