奇怪的洗牌逻辑
程序员文章站
2022-03-28 23:49:42
...
跑了1W次,洗牌逻辑耗时2.5019571781158,没有出现重复率,但是感觉奇奇怪怪的,先留着吧。回头再说 无 class demo{ private $dic = array('a', 'b', 'c', 'd'); // 花色 private $kings = array('w1', 'w2'); // 大小王 private $card_set = array(); // 扑克
跑了1W次,洗牌逻辑耗时2.5019571781158, 没有出现重复率,但是感觉奇奇怪怪的,先留着吧。回头再说
class demo { private $dic = array('a', 'b', 'c', 'd'); // 花色 private $kings = array('w1', 'w2'); // 大小王 private $card_set = array(); // 扑克牌 private $card_array = array(); // 洗好的牌 // 执行随机洗牌 public function getCardSet() { $this->createCard(); for($i = 0; $i getRandNum(); $k = $this->key; $this->card_array[$i] = $this->card_set[$k]; unset($this->card_set[$k]); } ksort($this->card_array); return implode(',', $this->card_array); } // 生成扑克牌 public function createCard() { $tmp_card = array(); for($i = 1; $i dic); for($j = 0; $j dic[$j] . $i; } } $this->card_set = array_merge($tmp_card, $this->kings); } // 生成随机数 public function getRandNum() { $num = microtime(true); $k = rand(0, 53); if(! isset($this->card_set[$k])) { $this->getRandNum(); } else { $this->key = $k; } } }