php九宫格抽奖思路,九宫格抽奖概率问题!!

这种逻辑应该后台写,并且在提交中奖结果时要进行验证,否则前端太容易篡改数据了。

点击抽奖时,请求后台

后台返回抽奖结果

前端播放抽奖动画,并且保证最后停在返回的中奖结果项上

--- 更新 ---

大致给你个权重算法

// 权重越小越难中奖

// 这里iphone中奖概率为 1/2001 大致为 0.000499

const prizeList = [

{ name: 'iphone', weight: 1 },

{ name: 'book', weight: 1000 },

{ name: 'sorry', weight: 1000 }

]

function config (prizeList) {

let index = 0

prizeList.forEach(prize => {

prize.min = index

prize.max = index + prize.weight

index += prize.weight

})

return function () {

let num = random(0, index - 1)

return prizeList.filter(prize => prize.max > num && prize.min <= num)[0]

}

}

// test

function test (total, prizeName) {

const lottery = config(prizeList)

let n = 0

for (let i = 0; i < total; i++) {

if (lottery().name === prizeName) {

n++

}

}

console.log(prizeName, n / total)

}

test(100000, 'iphone') // iphone 0.00047

test(100000, 'book') // book 0.50047

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值