学习php抽奖程序之几率算法

发布时间:2020-07-06编辑:脚本学堂
介绍下,有关php抽奖程序的几率算法,通过二个实例代码,帮助大家的理解。有需要的朋友,可以看看。

一个抽奖程序:
贵重物品出现几率低,便宜物品出现几率高。

问题是:在一个物品合成系统中,需要使用几件不同的物品来合成宝石,有不同的几率生成一颗(50%)、两颗(16%)和三颗(2%)宝石,其余的为爆掉,即什么也得不到。
方法1,
 

复制代码 代码示例:
<?php
//初始化数组
$stone_arr = array(
        array( 'num' => 1, 'prob' => '50%' ),
        array( 'num' => 2, 'prob' => '16%' ),
        array( 'num' => 3, 'prob' => '2%' )
         );
//随机获得一个幸运数字
$luck_num = mt_rand( 0, 99 );
//初始化几率区间和最终宝石生产数目
$lucky_range = $made_num = 0;
 
foreach( $stone_arr as $sa ){
    $prob = intval( $sa['prob'] );
    if( $luck_num >= $lucky_range && $luck_num < $lucky_range + $prob ){
        $made_num = $sa['num'];
        break;
    }
    else{
        $lucky_range += $prob;
    }
}
 
for( $i = 0; $i < $made_num; $i++ ){
    //生产宝石的逻辑
}
//by www.jb200.com
?>

方法2,
 

复制代码 代码示例:
<?php 
$a = array_fill(0,50, 1);
$b = array_fill(0,16, 2);
$c = array_fill(0,2, 3);
$d = array_fill(0,32, 0);
$arr = array_merge($a, $b, $c);
//var_dump($arr);
$d = mt_rand(0,99);
echo $arr[$d];
?>

哪个抽奖方法更好呢?大家在使用中体会与琢磨下吧。
 

您可能感兴趣的文章:

php 权重计算方法(抽奖)
php抽奖程序(抽取三名幸运观众)的核心代码
php抽奖小程序代码一例
php分时间段的抽奖程序代码
php抽奖计算的例子