主题:请教各位高手一个简单的逻辑问题
fatxing
[专家分:150] 发布于 2010-01-16 11:55:00
我准备改造一个抽奖的程序,遇到一些逻辑算法的问题想请教一下各位。
程序是这样的
TOTAL为该等级的获奖总人数
EVERYTIME为该等级每轮抽出的人数
SELECTOUT为已经抽出的人数
NEEDNUM为该轮需要抽出的人数
比如说总共有50个中奖名额,每次抽出25个,已经抽了10个,那么该轮就需要再抽15个啦。
那公式应该就是 NEEDNUM=EVRYTIME-SELECTOUT。
但应该怎么描述下一轮要抽多少呢?
再比如我已经抽了30个,那应该怎么通过逻辑表示出呢?需要增加其他变量吗?
就是那个已抽出的量困扰了我好多天,感谢各位指教一下了。
回复列表 (共12个回复)
沙发
雪光风剑 [专家分:27190] 发布于 2010-01-16 12:14:00
最简单的方法就是把该等级获奖的总人数设成常量,然后设一个该等级剩余中奖名额的变量,初始为前面说的常量,每轮递减,最后减到0
板凳
fatxing [专家分:150] 发布于 2010-01-16 16:42:00
total我是设了个数组来记录各个等级的数量的,也就是常量了
总剩余数的话total-selectout可以算出,但怎样可以得出每轮的剩余数呢?
3 楼
亳州您 [专家分:0] 发布于 2010-01-17 04:04:00
我先等着——以后慢慢看
4 楼
五月的 [专家分:0] 发布于 2010-01-17 15:53:00
对这个话题感兴趣的朋友一起交流下哈~
[img]http://i3.6.cn/cvbnm/3e/de/4f/a70692c20c146669c71a74f022298b2c.jpg[/img]
5 楼
雪光风剑 [专家分:27190] 发布于 2010-01-17 19:18:00
我一开始可能弄错你的问题了了。你一开始问的是“下一轮应该抽出的人数”
其实这个问题跟别的都没关系,主要要看,你每轮抽奖的人数到底是相同的还是公式计算的
如果是公式计算的,单独列出这个变量
如果是固定的,增加相应常量
6 楼
fatxing [专家分:150] 发布于 2010-01-17 21:20:00
每轮设定数量是固定的,就是EVERYTIME保存的,但每轮会有没抽完就意外中断的可能。所以继续抽的话应该就先抽完上次未完成的,再抽下一轮。
比如
共100个名额,每轮要抽10个,总共已抽出18个,那么本轮就剩下2个要抽,下轮就继续抽10个。
就是这个逻辑了。不知该如何用简单的代码表达
7 楼
fatxing [专家分:150] 发布于 2010-01-17 21:40:00
哈哈,终于想到了~~~想不到是要求余····
初始化
For ii = 1 To Val(GetINI("奖项名称", "no"))
total(ii) = Val(GetINI("奖项设置", "level" & ii))
everytime(ii) = Val(GetINI("奖项设置", "mc" & ii))
selectout(ii) = Val(GetINI("中奖数记录", "level" & ii))
If (total(ii) - selectout(ii)) Mod everytime(ii) > 0 Then
neednum(ii) = (total(ii) - selectout(ii)) Mod everytime(ii)
Else
neednum(ii) = everytime(ii)
End If
selected(ii) = selectout(ii)
Next ii
然后每次调用就 selected(ii) = selected(ii)+1
再把selected(ii)写回INI文件
再刷新各个数
For ii = 1 To Val(GetINI("奖项名称", "no"))
selectout(ii) = Val(GetINI("中奖数记录", "level" & ii))
If (total(ii) - selectout(ii)) Mod everytime(ii) > 0 Then
neednum(ii) = (total(ii) - selectout(ii)) Mod everytime(ii)
Else
neednum(ii) = everytime(ii)
End If
Next ii
不知有没有简单点的方法~
8 楼
堃噯樹樹 [专家分:0] 发布于 2010-01-18 04:10:00
楼主,你的高尚情操太让人感动了。
9 楼
五月的 [专家分:0] 发布于 2010-01-18 16:48:00
兰州是无效信
10 楼
雪光风剑 [专家分:27190] 发布于 2010-01-18 23:30:00
哪用这么麻烦啊……
每次是常量的话
剩余本奖=剩余本奖-每轮+本轮剩余
不就可以了,抽奖那里返回一个本轮还剩几个本级奖名额就好了
我来回复