2014-12-01 146 views
0

我試圖寫一個PHP代碼給我滾3個骰子,每個骰子的值的可能範圍,因爲我們知道可以從一系列{1 - 6}PHP 3擲骰子的概率計算

所以在這裏是我有:

$x = rand(1,6); 
$y = rand(1,6); 
$z = rand(1,6); 

所以輸出將是;

$a = $x + $y + $z; 

我想寫一個php函數來確定$ a的概率;低輸出是3(1 + 1 + 1)&最大是18這是(6 + 6 + 6)我怎麼能這樣做呢?

感謝

+2

*各自如我們知道可以從{1的範圍內骰子 - 6} *有人需要玩一些D&D – 2014-12-01 20:24:56

+0

你想計算每個潛在卷的概率?因爲範圍很明顯,而不需要做任何奇特的編碼:3 - > 18,aka(1 + 1 + 1) - >(6 + 6 + 6) – 2014-12-01 20:25:48

+0

'$ numDice = 3; $ low = 1; $ high = 6;函數diceRange($ numDice,$ low,$ high){return array('low'=> $ numDice * $ low,'high'=> $ numDice * $ high); } print_r(diceRange($ numDice,$ low,$ high));' – sjagr 2014-12-01 20:26:08

回答

0

我很無聊:

$sides=6; 
$num=3; 

function diceRange($sides,$num) { 
    return array('low' => 1 * $num, 'high' => $sides * $num); 
} 
0

更具體請。任何一組骰子的範圍,包含任意數量的數字或者該特定組合的範圍。或者在一定量的卷之後的範圍?

對於軋輥的具體量見下文

$min = 0; 
$max = 0; 

for ($roll = 0; $roll<$amountOfRolls; $roll++){ 
    $a = $x + $y + $z; 
    if ($a<$min){ 
    $min = $a 
    } 

if ($a>$max){ 
    $max = $a 
    } 

} 

$range = $max-$min; 
0

可以計算出總的每個可能的軋輥,確定頻率,每個總出現,因此,概率。然後將這種技術擴展到不同種類/骰子組合。下面是使用3D6一個例子:

$totals = array(); 

$count = 0; 
for ($x = 1 ; $x <= 6 ; $x++) { 
    for ($y = 1 ; $y <= 6 ; $y++) { 
     for ($z = 1 ; $z <= 6 ; $z++) { 
      $total = $x + $y + $z; 
      if (isset($totals[$total])) { 
       $totals[$total]++; 
      } else { 
       $totals[$total] = 1; 
      } 
      $count++; 
     } 
    } 
} 

foreach ($totals as $num => $freq) { 
    $probability = number_format(100*$freq/$count,2); 
    echo "$num: $freq ($probability %)\n"; 
} 

這裏的一個網站,其中包括不同類型的不同的組合的骰子的 - 特別是對於d & d:http://rumkin.com/reference/dnd/diestats.php