2012-04-22 93 views
0

所以我有可能的组合的阵列:每轮(总共3)PHP槽孔,生成组合

$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', 
); 

的阵列和阵列,如何能我用七|任何|任何工作正常进行加权随机组合?

我知道我可以创建两个数组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

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

例如你做一个运行,得到这样的A/A/B,所以你有2 A的,并期待在表

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

我是一个PHP的小白,我怎么使用呢? – Madmadmax 2012-04-23 14:33:20