大转盘抽奖概率算法

大转盘方式的抽奖是经常见的,,最近在做了一个抽奖的功能,其中最重要的就是概率,概率的算法大同小异,,为保证每个奖品都可抽完,下面就是我写一个算法

function getRand(array $products,$flage){

//1、计算总中奖概率

$chanceSum = array_sum($arr);//所有奖品的概率总和,

//2、计算每个奖品的中奖率

foreach($prducts as $value){

if($value['chance']<=0)//概率值小于等于0。返回false表示未中奖

{

continue;

}else{

$randNum = mt_rand(1,$chanceSum );//随机抽取

if($randNum <=$value['chance']){ //循环获取到的概率小于等于随机抽取到的概率表示中奖

return $value;

}else{//此时概率发生变化(其中某个奖品的库存为0时,总的概率减去奖品为0的概率)

if($flag){

$chanceSum - = $value['chance'];

}

}

}

}

return false;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容