2012-04-22 30 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