作者JJss (sad jjss)
看板Visual_Basic
标题Re: [VB6 ] 乱数不重复
时间Wed Nov 2 17:11:05 2005
※ 引述《lovebandy ( it's my time)》之铭言:
: 我是VB新手
: 想写一个模拟产生宾果游戏的方格。宣告一个5x5的阵列
: 其中阵列中每个元素为随机产生(1~25)且产生的数字不可重复
: 麻烦各位大大指点一下罗!!
最直觉的作法是
用一个阵列 box[25] 来记忆曾经产生过的乱数
去储存每次产生的乱数,然後新产生的乱数就先检查有没有储存过了
有的话重新产生,没有的话储存进去,并放置到方格的二维阵列中
25次的回圈跑完结果也出来了
不过既然是最直觉的作法,所以是不考虑效率的,小程式这样就可以了
比较好的作法是
设一个阵列 box[25]
当产生过了,就将该元素值设定 (如设成1 box[6]=1)
每次产生乱数後,如果该元素已设定过,则不产生,重新产生
然後没设定过的-> 设定 -> 放置到方格的二维阵列中
会比较有效率一些,不过除非是网路程式 会多人使用 不然其实差不太多
更好的作法是
同方法二,但是每次产生的乱数范围递减,
每次产生的乱数值不是直接数,而是位移值
如产生 7 ,则去取第7个未被设定的乱数
跟前两个方法比较 差别最多的就是时间使用的稳定性
前面的方法中,当乱数产生已经使用过,只能重新产生 (重掷骰)
所以时间不稳定,而这个方法可以较固定时间
在比较大或是网路环境 (多人同时使用)的需要效率的情况下 建议使用
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.69.52.192