所以我有一系列可能的组合:
$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];
}
答案 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...)
);