Dice Roll Array PHP问题

时间:2016-02-16 23:08:44

标签: php

我之前从未使用过PHP,但基本上这个程序应该运行36,000次,并且每次掷出两个骰子时,总数就会得到一个"计数器。"现在,它输出它已经滚动的任何数字" 36,000个标签"代替。

这是我的代码:

 <?php 

 $dice = (rand(1,6) + rand(1,6));
 $roll = array();

     for ($result = 0; $result < 36000; $result++){

        if ($dice == 2){
        $roll[2]++;
        }
        if ($dice == 3){
        $roll[3]++;
        }
        if ($dice == 4){
        $roll[4]++;
        }
        if ($dice == 5){
        $roll[5]++;
        }
        if ($dice == 6){
        $roll[6]++;
        }
        if ($dice == 7){
        $roll[7]++;
        }
        if ($dice == 8){
        $roll[8]++;
        }
        if ($dice == 9){
        $roll[9]++;
        }
        if ($dice == 10){
        $roll[10]++;
        }
        if ($dice == 11){
        $roll[11]++;
        }
        if ($dice == 12){
        $roll[12]++;
        }
    }
?>

2 个答案:

答案 0 :(得分:6)

初始化所有可能性并在循环内添加骰子卷。

http://codepad.org/nQfGZ3bR

<?php 
$roll = array();
$roll[2] = 0;
$roll[3] = 0;
$roll[4] = 0;
$roll[5] = 0;
$roll[6] = 0;
$roll[7] = 0;
$roll[8] = 0;
$roll[9] = 0;
$roll[10] = 0;
$roll[11] = 0;
$roll[12] = 0;

for ($result = 0; $result < 36000; $result++){
    $dice = (rand(1,6) + rand(1,6));
    $roll[$dice]++;
}

var_dump($roll);

输出:

array(11) {
  [2]=>
  int(962)
  [3]=>
  int(1999)
  [4]=>
  int(3019)
  [5]=>
  int(3923)
  [6]=>
  int(4929)
  [7]=>
  int(6083)
  [8]=>
  int(5076)
  [9]=>
  int(3971)
  [10]=>
  int(3006)
  [11]=>
  int(2017)
  [12]=>
  int(1015)
}

答案 1 :(得分:4)

您需要在 for 循环中移动 $ dice = rand ...