Heim  >  Artikel  >  php教程  >  一个简单php 抽奖小程序

一个简单php 抽奖小程序

WBOY
WBOYOriginal
2016-05-25 16:49:163135Durchsuche

一个抽奖小程序,概论可控,也可某个奖品在前端显示,而程序中根本不可能获得,把所有的概率x10后相加起来,新数组中每项的值等于它前几个的和加上它本身,然后随即生成一个0到最大数之间的一个数,通过循环查看它属于那个区间,返回该区间的key,代码如下:

<?php
$prize = array(
    1 => 3.5, //3.5%机率
    2 => 2.5,
    3 => 6,
    4 => 2,
    5 => 42, //42%机率
    6 => 36,
    7 => 2,
    8 => 4,
    9 => 2
);
//最后确认相加等于100
$prizeList = array(
    1 => array(
        &#39;小仙子&#39;
    ) ,
    2 => array(
        &#39;5Q币&#39;
    ) ,
    3 => array(
        &#39;38888游戏币&#39;
    ) ,
    4 => array(
        &#39;88888游戏币&#39;
    ) ,
    5 => array(
        &#39;谢谢参与!&#39;
    ) ,
    6 => array(
        &#39;欢迎下次再来!&#39;
    ) ,
    7 => array(
        &#39;10Q币&#39;
    ) ,
    8 => array(
        &#39;888银元宝(绑定)&#39;
    ) ,
    9 => array(
        &#39;随机高级坐骑(绑定)&#39;
    )
);
//unset($prize[7]); 直接把10Q这个奖品去掉
$times = 10;
$max = 0;
foreach ($prize as $k => $v) {
    $max = $v * $times + $max;
    $row[&#39;v&#39;] = $max;
    $row[&#39;k&#39;] = $k;
    $prizeZone[] = $row;
}
$max--; //临界值
$rand = mt_rand(0, $max);
$zone = 1;
foreach ($prizeZone as $k => $v) {
    if ($rand >= $v[&#39;v&#39;]) {
        if ($rand >= $prizeZone[$k + 1][&#39;v&#39;]) {
            continue;
        } else {
            $zone = $prizeZone[$k + 1][&#39;k&#39;];
            break;
        }
    }
    $zone = $v[&#39;k&#39;];
    break;
}
print_r($prizeList[$zone][0]);
?>

               
               

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn