作业帮 > 综合 > 作业

VB生成不重复的随机数

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 18:44:08
VB生成不重复的随机数
比如做个35选7,如何实现出来的数字都是不相同的呢?
我的建议是:第一步、先做一个数组,存上这35个数(可以不是连续的数,也可以是人名、字符串什么的);第二步、随机生成一个1-35之间的数,输出;第三步:把这个数和数组的第一个单元交换;第四步、从数组的第2-35之间随机抽取第二个数,输出;第五步、把这随机抽取的第二个数和数组的第二个单元内容呼唤;第六步、随机抽取第三个数,输出.重复到从第35-35个数之间随机抽取一个数,这时直接输出最后一个就行了.
程序如下(VB6):
工程里默认的窗体上,画一个Command1,粘贴程序:
option explicit
private vArray(1 to 35) as currency '定义数组个数
private sub command1_click()
test
end sub
private sub InitArray()
dim i as long
'给数组赋值
for i=1 to 35
varray(i)=i
next i
end sub
private sub Test()
dim iStart as long
dim iPos as long
dim vTemp as currency
dim sReturn as string
InitArray
randomize timer '设置随机因子,使其每次运行程序的随机数都不一样
iStart=1
do
iPos=int(rnd*(ubound(vArray)-iStart+1))+iStart '产生iStart到35(35取自vArray的上标)之间的整数
sReturn=sReturn & vArray(iPos) & vbcrlf '输出
'交换单元内容
vTemp=vArray(iStart)
vArray(iStart)=vArray(iPos)
vArray(iPos)=vTemp
iStart=iStart+1 '下次随机生成时,少生成一个
if iStart>=ubound(vArray) then
'最后一个了,直接输出
sReturn=sReturn & vArray(ubound(vArray))
Exit Do
end if
if iStart>7 then exit do '如果需要生成几个数,就把7改成几,大于数组元素的个数,将输出速度的元素个数(这个例子是35)
Loop
msgbox sReturn 'msgbox 输出结果
end sub
程序是直接在网页上写的,没有调试,如果有问题可以来信 cuidong@vip.163.com