前一篇关于PHP版本的骰子游戏(详见此),for循环的实现,在高并发下,效率显然是非常地低的。
下面是优化结果,如果您有更好的方法,望不吝赐教!
<?php class Dice { private $dice_type = 6; private $number = 1; private $people = 1; public function set_dice($dice_type) { $dice_type = intval($dice_type); $this->dice_type = $dice_type ? $dice_type : $this->dice_type; } public function set_number($number) { $number = intval($number); $this->number = $number ? $number : $this->number; } public function set_people($people) { $people = intval($people); $this->people = $people ? $people : $this->people; } private function roll() { return mt_rand(1, $this->dice_type); } public function result() { $fun_people = function() { $fun_game = function() { return $this->roll(); }; $arr_number = range(1, $this->number); return array_map($fun_game, $arr_number); }; $arr_people = range(1, $this->people); $result = array_map($fun_people, $arr_people); return $result; } } $Dice = new Dice(); $result = $Dice->result(); var_dump($result); ?>
哈哈,又到出题时间啦!如果需要比对最终结果,看谁的总点数最大呢?