|
主题: 有关线性表和随机函数的问题(福利彩票)
|
 xys
职务:普通成员
等级:1
金币:0.0
发贴:24
注册:2000/10/17 8:42:56
|
#12000/12/5 10:35:50
本人昨天兴起编了个模拟福利彩票的程序,其中有一个小问题,我查来查去函数、原理都对,可就是查不出在哪,请同行指教! ---------------- 原理:在1——35个数字中随机抽机8个数字,顺序是一个抽完一个再抽一个,抽完一个后,应该在数字中删附除刚才抽取的数字,直到8个数字抽完,最后一个为特别号码。 ------------ 方法: 1)设一个线性表存放1—35个数字 NumberList=[1,2,3,4,5,6,7,8,9,...,35] 2)每抽取一个数字用决策图标,用时间来控制退出,其中用的语句是:(仅举第一个号码,其余类似) number1:=Random(1,ListCount(NumberList),1) 3)在抽取完第一个号码后,改变线性表,以删除第一个号码: --找出第1个号码所在的表的位置 index:=Findvalue(numberList, number1) --在表中删除第1个号码代表的数字 DeleteAtIndex(NumberList, index) 这样得到的NumberList是一个去掉了第一个号码的线性表,然后重复这过程,直到抽完所有的号码。 ------------------ 错误信息:抽出的号码中,有时会有两个相同的号码,可我在调试信息中看到,每一次的抽取后,经过删除的操作,都删除了前次抽出的号码,又何来相同的号码呢?真是百思不得其解,望朋友们不惜赐教 ! 要源程序的朋友也可来信,顺便帮忙查找原因?!
|
 xys
职务:普通成员
等级:1
金币:0.0
发贴:24
注册:2000/10/17 8:42:56
|
#22000/12/5 10:54:18
最新查错信息: 在调试中,我发现,当出现与前面的数字相同的号码时,它所在线性表的位置不是与与它相同号码的数学的位置相同,而是与跟跟它前一个数学的位置相同,表明在有上一步的删除操作中的删除操作并没有起作用,不知何故?
|
 古道猿
职务:普通成员
等级:1
金币:0.0
发贴:100
注册:2000/11/24 11:56:39
|
#32000/12/5 12:06:30
换个角度考虑一下。 用随机函数在1到35之间抽取一个数。 用变量1读出这个数;再抽出一个数,用变量2读出。用“IF”语句,比较两个数,如果相同,那么,重新进行抽取。否则,完成下一次抽取,再进行比较......依次类推。 应该能完成,不过,实在很抱歉,我没有试过,只是提个建议。
|
 xys
职务:普通成员
等级:1
金币:0.0
发贴:24
注册:2000/10/17 8:42:56
|
#42000/12/5 12:17:40
古道猿兄,谢谢!你的方法应该可行,其实解决这问题方法有几种,我只是不明白我上面的方法究竟出错在哪?有空的话,不妨帮我看看!
|
 古道猿
职务:普通成员
等级:1
金币:0.0
发贴:100
注册:2000/11/24 11:56:39
|
#52000/12/6 11:48:00
如果不麻烦的话,你能否发一个到我e-mail信箱中,gudyuan@263.net 让我研究和学习一下?
|
 xys
职务:普通成员
等级:1
金币:0.0
发贴:24
注册:2000/10/17 8:42:56
|
#62000/12/6 11:57:16
谢谢,我已经解决这个问题了, 已发送出去了,请查收!并指教!
|
 dsd
职务:普通成员
等级:1
金币:0.0
发贴:96
注册:2000/11/29 22:33:04
|
#72000/12/6 15:28:46
呵呵!要是中了大奖,那就给我也发一个吧!
|
 古道猿
职务:普通成员
等级:1
金币:0.0
发贴:100
注册:2000/11/24 11:56:39
|
#82000/12/6 17:25:36
谢谢你,我收到了。我会好好学习和用一下。说不定那天就得个大奖。
|
 烟火
职务:普通成员
等级:1
金币:0.0
发贴:31
注册:2000/10/18 18:11:40
|
#92000/12/7 21:44:55
我同意古道猿的做法,我以前用VB就是这么做的,没问题,请xys 也给我发一份源程序,我研究一下,yanhuo00@yeah.net
|