Php 3掷骰子概率计算

时间:2014-12-01 20:23:00

标签: php

我正在尝试编写一个PHP代码,为​​我提供滚动3个骰子的可能值范围,我们知道每个骰子可能是{1 - 6}的范围

所以这就是我所拥有的:

 $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)我怎么能这样做?

由于

3 个答案:

答案 0 :(得分:0)

我很无聊:

$sides=6; 
$num=3;

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

答案 1 :(得分: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;

答案 2 :(得分: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&amp; D:http://rumkin.com/reference/dnd/diestats.php