//随机给出一个概率
function rand_redpacket()
{
//我们先提前设定一个价格数组,对应每个的概率,总数为1000
$prePriceArr = [
'1.00' =>700,
'1.66'=>250,
'6.66' =>55,
'88.88' =>0,
];
//回传的值
$ret = '';
//获取数组内概率总共相加,其实就是1000
$sum = array_sum($prePriceArr);
//循环数组
foreach($prePriceArr as $k=>$v)
{
//获取1到1000随机一个数字
$r = mt_rand(1, $sum);
//如果这个数字小于我们数组中的概率,那么直接中断循环,回传这个数值
if($r <= $v)
{
$ret = $k;
break;
}else{
//如果数字大于,那么总数减去当前的数字,继续循环,查看下一个是否符合
//例如780,那么这里就是1000-780=220,
//那么下一步,1和220再次随机,看是哪个数.
$sum = max(0, $sum - $v);
}
}
switch ($ret){
case '1.00':
$price = 1;
break;
case '1.66':
$price = 1.66;
break;
case '6.66':
$price = 6.66;
break;
case '88.88':
$price = 88.88;
break;
default:
$price = 1;
}
return $price;
}
01-14
3604
09-19
2690
02-15
259