2014-12-01 145 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