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抽奖程序算法