PHP Juego exactitud arma
Pregunta
Estoy tratando de encontrar una manera para que los jugadores disparar sus armas y sólo golpeado por un determinado porcentaje. Por ejemplo, un cañón sólo puede golpear 70% del tiempo, mientras que otro solamente golpea 34% del tiempo.
Hasta ahora todo lo que podría llegar a conjuntos se pondera.
Remate 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;
}
}
Remate 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)];
}
No hace parecen que los jugadores están golpeando los porcentajes correctos pero no estoy realmente seguro de por qué.
Cualquier idea o sugerencia? Es algo manifiestamente equivocada con estos?
Gracias
Solución
private function weapon_fired($weight)
{
return mt_rand(0, 99) < $weight;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow