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)
归档时间: |
|
查看次数: |
204 次 |
最近记录: |