|
在实际的开发过程中,经常会用到一些几率的时间,例如有这样一个奖励的数组:
ipad的几率是2%,金币的几率是80%,钻石币的几率是10%,经验值的几率是8%
要求写一个函数来计算你得到的是什么.
<?php
$data = array(
'iapd' => 2,
'coin' => 80,
'cash' => 10,
'xp' => 8
);
$rs = get_weight_random($data);
function get_weight_random($weight) {
$point = 0;
foreach ($weight as $value) {
if ($value < 1) {
$temp_value = explode('.', $value);
$point = strlen(array_pop($temp_value));
}
}
$times = pow(10, $point);
$weight_rand = mt_rand(1, array_sum($weight) * $times);
asort($weight);
$base = 0;
foreach ($weight as $key => $value) {
$min = $base * $times + 1;
$max = ($base + $value) * $times;
if ($weight_rand >= $min && $weight_rand <= $max) {
break;
} else {
$base += $value;
}
}
return $key;
}
|
|
|