基于java刮刮乐,概率和后台均实现

package com.sunmo.buz.games.action;

import java.util.Random;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;


public class ScratchAction extends DispatchAction
{

public ActionForward loadaward(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
{

Object obj[] = lottery();
// 这里自己连接数据
request.setAttribute("award", obj[0]);
return mapping.findForward("success");

/*
* 如果是JSON格式
*response.setCharacterEncoding("UTF-8");
* response.getWriter().write(JsonUtils.object2json(obj));
* response.getWriter().flush(); response.getWriter().close(); return
* null
*/

}

// 抽奖并返回角度和奖项
public Object[] lottery()
{
Object[][] lott = getLunckArray();
// 概率数组
Integer obj[] = new Integer[lott.length];
for (int i = 0; i < lott.length; i++)
{
obj[i] = (Integer) lott[i][2];
}
Integer prizeId = getRand(obj); // 根据概率获取奖项id
String msg = (String) lott[prizeId][1];// 提示信息
return new Object[]
{ prizeId, msg };
}

protected static Object[][] getLunckArray()
{

Object luckArr[][] = new Object[][]
{
{ 1, "一等奖", 1 },
{ 2, "二等奖", 2 },
{ 3, "三等奖", 5 },
{ 4, "四等奖", 7 },
{ 5, "五等奖", 10 },
{ 6, "六等奖", 25 },
{ 7, "谢谢惠顾", 50 } };

return luckArr;
}

protected static Integer getRand(Integer obj[])
{
Integer result = null;
int sum = 0;// 概率数组的总概率精度
for (int i = 0; i < obj.length; i++)
{
sum += obj[i];
}
for (int i = 0; i < obj.length; i++)
{
int randomNum = new Random().nextInt(sum);// 随即生成1到sum的整数
if (randomNum < obj[i])
{// 中奖
result = i;
break;
}
else
{
sum -= obj[i];
}
}
return result;
}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值