asp抽奖程序算法

  asp抽奖程序算法,需要记录抽奖了多少次的自己注意保存数据结构到数据库中,需要导入json2.asp这个文件,其实内容就是json2.js这个文件,然后用<script language="javascript" runat="server">括起变为服务器端代码即可。

<!--#include file="json2.asp"-->
<script language="javascript" runat="server">
    $prize_arr = [//prizeNum:此奖项总数  use:已经抽出的数量,自己注意修改数据后保存到数据库中
    {id: 1, min: 1, max: 29, prize: '一等奖', v: 1, prizeNum: 3, use: 0 },
    { id: 2, min: 302, max: 328, prize: '二等奖', v: 2, prizeNum: 3, use: 0 },
    { id: 3, min: 242, max: 268, prize: '三等奖', v: 5, prizeNum: 3, use: 0 },
    { id: 4, min: 182, max: 208, prize: '四等奖', v: 7, prizeNum: 3, use: 0 },
    { id: 5, min: 122, max: 148, prize: '五等奖', v: 10, prizeNum: 3, use: 0 },
    { id: 6, min: 62, max: 88, prize: '六等奖', v: 25, prizeNum: 3, use: 0 },
    { id: 7, min: [32, 92, 152, 212, 272, 332], max: [58, 118, 178, 238, 298, 358], prize: '七等奖', v: 50, prizeNum: 3, use: 0}];
    function rnd(min, max) { var tmp = min; if (max < min) { min = max; max = tmp; } return Math.floor(Math.random() * (max - min + 1) + min); }
    function getRand($proArr, $proSum) {
        $result = '';
        //概率数组循环
        for ($key in $proArr) {
            $proCur = $proArr[$key];
            $randNum = rnd(1, $proSum);
            if ($randNum <= $proCur) {
                $result = $key;
                break;
            } else {
                $proSum -= $proCur;
            }
        }
        return $result;
    }
    function getPrize() {
        $proSum = 0;
        $arr = [];
        for (k in $prize_arr) {
            $arr[$prize_arr[k].id] = $prize_arr[k].v;
            $proSum += $prize_arr[k].v;
        }
        $rid = getRand($arr, $proSum);
        $res = $prize_arr[$rid - 1];
        if ($res.use < $res.prizeNum) {
            $min = $res['min'];
            $max = $res['max'];
            $result = '{"prize":"' + $res.prize + '"';
            if ($res['id'] == 7) {
                $i = rnd(0, 5);
                $result += ',"angle":' + rnd($min[$i], $max[$i]);
            } else {
                $result += ',"angle":' + rnd($min, $max);
            }
            $result += '}';
            $res.use++; //抽出项+1
            //保存数据,调用JSON2.asp中对JSON对象的扩展方法stringify将json对象转为对应的字符串
            //Response.Write(JSON.stringify($prize_arr));
        } else $result = '{"error":"此奖项已经抽完!"}';
        return $result;
    }
</script>
<%'由于asp使用vbs语言对json的操作比较较麻烦,所以用服务器端的javascript作为中转代码,操作简便
response.Write getPrize()
 %>

 


原创文章,转载请注明出处:asp抽奖程序算法

评论(0)Web开发网
阅读(81)喜欢(0)不喜欢(0)Asp/VBScript