Question

Je suis en train de trouver un moyen pour les joueurs de tirer leurs armes et ne frapper un certain pourcentage. Par exemple, une arme à feu ne peut frapper 70% du temps, tandis qu'un autre ne touche que 34% du temps.

Jusqu'à présent, tout ce que je pourrait trouver est pondéré en fonction des tableaux.

Tentative 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;
        }
    }

Tentative 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)];
    }

Il ne semblent que les joueurs frappent les pourcentages corrects, mais je ne suis pas vraiment sûr pourquoi.

Toutes les idées ou suggestions? Quelque chose ne va pas avec ces aveuglante?

Merci

Était-ce utile?

La solution

private function weapon_fired($weight)
    {
        return mt_rand(0, 99) < $weight;
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top