随机优惠券发放 金额越大 概率越小金额越小概率越大算法

/**
 * 金额越大 概率越小  金额越小概率越大  建议 min 和 max 的值不能相差  10以上,相差越大, 计算量越大越慢    
 * $pow 默认1.6 值越大 取值 1.1 到 2.0, 则分的越散 则 大金额概率越小 ,值越小  则 分的越密集 效果越差  运算越快  越大  运算量越大
 * @param int $min 最小金额
 * @param int $max 最大金额
 */
function rand_create_youhui($min,$max,$pow=1.6){
$indexArr = [];
$j=1;
for($i=$min;$i<=$max;$i++){
  $indexArr[]=['index'=>$j,'amount'=>$max+$min-$i];
  $j++;
}
  $amountArr = [];
  foreach ($indexArr as $key=>$v){
    for($i=1;$i<=intval(pow($pow,$v['index'])*$v['index']);$i++){
      $amountArr[]=$v['amount'];
    }
  }
 $amount =   $amountArr[rand(0,count($amountArr)-1)];
 return $amount;

}


在  $pow为  1.6  随机 1到10元的情况下, 随机 1000次结果:

1元   450个


2元242个



3元 146个


4元74个


5元 44个


6元 23个



7元12个



。。。


1 元 450 个

2元

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值