0

我正在尝试模拟 11 面骰子的 2000 个骰子卷(侧面数字 2 到 12)。我必须将数据存储在一个数组中。

这是我掷骰子的循环:

for($counter = 0; $counter <=2000; $counter++)
{
$die = rand(2, 12);
$int[$counter] = $die;
echo " $die ,";
}

^ 这似乎工作正常,因为我有 2000 个随机数输出。

下一部分是我遇到麻烦的地方。我必须输出一些结果。为了简单起见,假设我必须输出使用 echo 语句滚动的五的数量,例如:

_ _ 五人被掷出。”

我似乎无法让它工作。对于这个任务,我必须使用 for 循环。我尝试使用 if 语句创建一个新语句,并在上面的循环中包含一个 if 语句。也没有运气。我怎样才能使这项工作?

4

2 回答 2

1

有一个本机函数array_count_values(),它使用输入数组的值作为键并将它们在输入中的频率作为值返回一个数组。

您可以在 上使用它$int,然后使用 for 循环遍历每个 die 选项。

如果这不是一个选项,您可以使用 for 循环复制该函数过程,以使用数组的值$int作为键创建一个新数组,然后将每个键的值增加 1。

由于这是一项任务,我不想发布我将使用的实际代码。但是,如果您发布到目前为止您尝试过的内容,我愿意查看并提供更正/编辑以使您的代码正常工作。

于 2013-08-08T01:11:08.990 回答
0

我想这个可以解决你的问题..

 $array = array();
 for($counter = 0; $counter <=2000; $counter++)
 {
     $die = rand(2, 12);
     $array[]= $die;
 }

for($c=2;$c<=12;$c++){
    foreach($array as $r){
        if($c==$r)
        {
            $arr[$c]+=1;
        }
    }
}

foreach($arr as $key=>$value)
{

    echo $value." [".$key."] were rolled<br>";
}
于 2013-08-08T01:18:55.793 回答