本帖最后由 Specs_ 于 2013-07-01 10:02:02 编辑

解决方案 »

  1.   

    应该还谈不上算法举个简单的例子.
    9折中奖率40%    那你可以$num = rand(0,9);
    if($num <4){
        //中奖代码
    }else{
        //未中奖代码
    }八折10%的同理. 固定中奖人数的  要估算一个概率,然后用同样的方式计算是否中奖
    将已中奖人数存入数据库 当剩余中奖人数到0后 概率调整成0即可.从六折开始往下算  中了高的不再中低的
      

  2.   

    /** 获取折扣率,这里只是随机获取
     *  对于7、6折的,提前/之后判断是否达到数量,然后给予10%的几率。
     */
    function luckRate()
    {
    $randn = rand(1,10);
    $re = 1;
    switch ($randn)
    {
    case 1:
    case 2:
    case 3:
    case 4:
    $re = 0.9;
    break;
    case 5:
    $re = 0.8;
    break;
    case 6:
    $re = 0.7;
    break;
    case 7:
    $re = 0.6;
    break;
    default:
    $re = 1;
    break;
    }
    }