PHP游戏武器准确性

nok*_*oko 1 php random weighted

我试图找到一种方法让玩家发射他们的武器并且只打一定比例.例如,一支枪只能达到70%的时间,而另一支枪只能达到34%的时间.

到目前为止,我能想出的只有加权数组.

尝试1:

private function weighted_random(&$weight)
    {
        $weights = array(($weight/100), (100-$weight)/100);
        $r = mt_rand(1,1000);
        $offset = 0;
        foreach($weights as $k => $w)
        {
            $offset += $w*1000;
            if($r <= $offset)
                return $k;
        }
    }
Run Code Online (Sandbox Code Playgroud)

尝试2:

private function weapon_fired(&$weight)
    {
        $hit = array();
        for($i = 0; $i < $weight; $i++)
            $hit[] = true;
        for($i = $weight; $i < 100; $i++)
            $hit[] = false;
        shuffle($hit);
        return $hit[mt_rand(0,100)];
    }
Run Code Online (Sandbox Code Playgroud)

它不似乎是球员们打了正确的百分比,但我真的不知道为什么.

任何想法或建议?这些明显错误吗?

谢谢

Chr*_*Lee 10

private function weapon_fired($weight)
    {
        return mt_rand(0, 99) < $weight;
    }
Run Code Online (Sandbox Code Playgroud)