求 抽奖算法

wxywing 2008-09-19 06:29:54
6个箱子
鼠标点击相应箱子 即可获得随机奖励

规则如下:
5金币每日中奖人数为200人
10金币每日中奖人数为100人
30金币每日中奖人数为50人
50金币每日中奖人数为10人
100金币每日中奖人数为5人

大家给点意见 (有相应的代码最好了)~_~
...全文
214 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxywing 2008-09-20
  • 打赏
  • 举报
回复
ax003d: 你好~
有两个疑问:

1,如果我的奖项等级设得很多的话,IF()那不是很多吗?
2,然后我设置的中奖概率大的话 那不每次都去数据库判断 中奖后还得更新数据,并发上来怎么办?
ax003d 2008-09-20
  • 打赏
  • 举报
回复
你可以把所有的奖项等级放在散列表中,以(奖项名称,最多中奖人数)为键值对;
取出随机数后,查询散列表
如果散列表有此奖项

最多中奖人数是否为0

若否 (执行以下代码时锁定)

则中该奖项;
该奖项最多中奖人数减一;

否则
{ 不中奖;}


使用散列表,改善代码,解决疑问1。
此散列表放在内存中,每天0点0分初始化。如果需要记录中奖信息,则启用多线程记录到数据库。解决疑问2。
SysTem128 2008-09-19
  • 打赏
  • 举报
回复
先声明出中奖列表。
然后填充呗。

比如
先检查今日中奖列表内人员是否已满。
如果没满,则随机一个0-100间的数字 如果这个数字小于5那么这个人就中奖了。
然后在中奖列表中找出所有没有被占的中奖位置,按照位置编号随机填充。
ax003d 2008-09-19
  • 打赏
  • 举报
回复
点哪个箱子都一样
从1~10000(如果想中奖概率小点,可以取更大的数)中取一个随机整数
如果得数为5

判断中五金币人数是否超过200,

若否

则中五金币;

否则
{不中奖;}


如果得数为10

依次类推;

……

wxywing 2008-09-19
  • 打赏
  • 举报
回复
SysTem128:你好~

$price = new Prise();
$rank = array('Rank 1'=>1,'Rank 2'=>3,'Rank 3'=>5,'Rank 4'=>10,'Rank 5'=>15);
$price->getRank(1,500,$rank);
print_r($price->rankList);

那我点击箱子如何获取相应的值?
SysTem128 2008-09-19
  • 打赏
  • 举报
回复
http://blog.csdn.net/SysTem128/archive/2007/12/18/1947700.aspx
中奖等级列表
此资源包括抽奖相关所有的配置,中奖概率配置、奖品表、抽奖记录表和通用存储过程算法。 可以指定抽多少次以后在按照正常概率来计算,中奖个数,如果奖品全部被抽完就永远抽不中,中奖率和中奖最大范围有关,数字越大概率越低,反正越高。由于涉及到一些敏感表数据,只提供主要的中奖表,如用户流水账号信息这些表不提供。 规则: --中奖率公式:中奖率 = 奖项数字范围 ÷ 摇奖数字范围 ÷ 中奖数字范围 --1、摇奖数字范围最小值和最大值定义了产生奖项数字的范围。 --2、中奖数字范围是从1到中奖范围的最大值,此范围内产生中奖号码。 /* 比如说,现在有三个选择一等、二等、三等。 可以设置“摇奖数字选项”为 1-30 一等 奖项数字范围1-10 二等 奖项数字范围 11-20 三等 奖项数字范围 21-30 所设置的奖项数字范围必须在 “摇奖数字选项”范围内,而且不得交叉、重叠。 如果我其中一个设置1-12 另外一个设置10-20 那么就重叠了。 而且为了方便调整中奖率,建议把所有的 奖项数字范围全部设置等距离。如现在有十二个选项,那么依次可以设置成为以下: 1-10、11-20、21-30、...、111-120 那么自然 “摇奖数字范围”就是1-120 现在需要调整中奖率的大小,中奖号码不用改了,全部设置成为1. 然后去调整中奖数字范围。 比如说 一等 中奖数字范围 1-30 二等 中奖数字范围 1-20 三等 中奖数字范围 1-10 那么具体这样设置下来,中奖率会有多高呢?算一下便知道。 一等:10/(30*30)=1/90 九十分之一。 二等:10/(30*20)=1/60 六十分之一。 三等:10/(30*10)=1/30 三十分之一。 所以设置的时候就把中奖号码都设置成1,只需要调整中奖数字范围便可。 */

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧