怎样使以下随机函数不重复出现(VB)?

这是公司一个知识竞赛选题的ppt,想问一下,如何更改编程才能使题目不重复出现?请大神指教,谢谢!... 这是公司一个知识竞赛选题的ppt,想问一下,如何更改编程才能使题目不重复出现?请大神指教,谢谢! 展开
 我来答
听不清啊
高粉答主

2014-07-18 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:2亿
展开全部

给一个小程序,希望有帮到您。

Dim n As Integer, a(20) As Integer


Private Sub Command1_Click()  '初始化

 n = 20

 For i = 1 To n

   a(i) = i

 Next i

 Print

 Command2.Enabled = True

End Sub


Private Sub Command2_Click()    '随机抽取不重复数字

  Randomize

  k = Int(Rnd * n) + 1

  Print a(k);

  a(k) = a(n)

  n = n - 1

  If n Mod 10 = 0 Then Print

  If n = 0 Then Command2.Enabled = False

End Sub

哈喽魏无悔9N
推荐于2018-04-07 · TA获得超过2034个赞
知道小有建树答主
回答量:843
采纳率:0%
帮助的人:482万
展开全部
你用的是随机函数啊。。随机函数只是随机出现,不代表不会重复啊
你这样搞,定义个数组。然后把查询过的随机数据保存在数组里。
在下次查询的时候使用FOR循环检索下,然后再for里用个if去判断。重复的直接跳过。。。
这样就行了、
代码会写吗?不会的话追问,我给你写好
追问
麻烦帮写一下 我不会写O(∩_∩)O~ 下面是原来的部分代码 谢谢!

a = Fix(Rnd * 54 + 1) '使用随机函数
抽取框.Text = a
结果框.Text = ""
DoEvents
Loop
End Sub

Private Sub 停止_Click()

结果框.Text = 抽取框.Text
已抽题目 = 已抽题目 + 抽取框 + " "
停止.Enabled = False
End
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ZHMINGEN
2014-07-19 · TA获得超过1735个赞
知道大有可为答主
回答量:3149
采纳率:68%
帮助的人:1267万
展开全部

不知道你的意图,但是这个不可能产生重复的题号,你可以参考。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
设计营地
2014-07-18 · 分享交流设计软件相关的知识
设计营地
采纳数:552 获赞数:860

向TA提问 私信TA
展开全部

我给你一个思路,你把题目保存在数组中,你的应该是54个题,根据随机数的值交换两个数组成员的值,把顺序打乱。你固定输出一个或多个题即可。

例如:

dim D(3) asinteger, v as integer
For v=1 to 3
D(3)=v
Next
For v=1 to 3
If RND>0.5 then
D(0)= D(1)
D(1)= D(v)
D(v)= D(0)
End if
Next

假设,

第一次随机数大于0.5,D(1)和D(1)交换;1,2,3

第二次随机数大于0.5,D(2)和D(1)交换;2,1,3

第三次随机数大于0.5,D(3)和D(1)交换;3,1,2

 

第一次随机数大于0.5,D(1)和D(1)交换;1,2,3

第二次随机数不大于0.5,不交换;1,2,3

第三次随机数大于0.5,D(3)和D(1)交换;3,2,1

 

第一次随机数大于0.5,D(1)和D(1)交换;1,2,3

第二次随机数大于0.5,D(2)和D(1) 交换;2,1,3

第三次随机数不大于0.5,不交换;2,1,3

 

就出现123;312;321;213四种组合了,由于是根据随机数交换的他也就是随机的。

我们最后来输出D(1),就是1,3,3,2了。每次输出的都不一样。就不存在重复了,当然交换的规律可以自己设定。

一般来说,在抽签的过程中,概率是逐步升高的。

例如,有五只签,第一次抽取某只签的概率是五分之一。第二次抽取的是四分之一……

因为,第一次抽完后,就只剩下四只签了,要模拟抽签的过程就要每次都要做相应的调整。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友641afaf8f
2014-07-18 · TA获得超过465个赞
知道小有建树答主
回答量:365
采纳率:0%
帮助的人:409万
展开全部
建立一个公共变量数组,记录每次抽取的题号,称为已抽取题号库。点“开始”,随机生成的题号与已抽取题号库进行一一对比:
如果存在,重新生成;
如果不存在,就可以取为结果,并存进题号库
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式