プレイヤーが武器を発射し、特定のパーセンテージだけ命中させる方法を考え出そうとしています。たとえば、ある銃は 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;
}
}
試行 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)];
}
プレイヤーが正しいパーセンテージを達成しているようには見えませんが、その理由はよくわかりません。
アイデアや提案はありますか?これらに明らかな問題はありますか?
ありがとう