VB生成不重复随机数

VB生成不重复随机数

ID:27572318

大小:20.56 KB

页数:7页

时间:2018-12-04

VB生成不重复随机数_第1页
VB生成不重复随机数_第2页
VB生成不重复随机数_第3页
VB生成不重复随机数_第4页
VB生成不重复随机数_第5页
资源描述:

《VB生成不重复随机数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、VB生成不重复的随机数VB生成不重复的随机数我的建议是:第一步、先做一个数组,存上这35个数(可以不是连续的数,也可以是人名、字符串什么的);第二步、随机生成一个1-35之间的数,输出;第三步:把这个数和数组的第一个单元交换;第四步、从数组的第2-35之间随机抽取第二个数,输出;第五步、把这随机抽取的第二个数和数组的第二个单元内容呼唤;第六步、随机抽取第三个数,输出。。。。。重复到从第35-35个数之间随机抽取一个数,这时直接输出最后一个就行了。程序如下(VB6):工程里默认的窗体上,画一个Command1,粘贴程序

2、:optionexplicitprivatevArray(1to35)ascurrency'定义数组个数privatesubcommand1_click()testendsubprivatesubInitArray()dimiaslong'给数组赋值fori=1to35varray(i)=inextiendsubprivatesubTest()dimiStartaslongdimiPosaslongdimvTempascurrencydimsReturnasstringInitArrayrandomi

3、zetimer'设置随机因子,使其每次运行程序的随机数都不一样iStart=1doiPos=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)=vTempiStart

4、=iStart+1'下次随机生成时,少生成一个ifiStart>=ubound(vArray)then'最后一个了,直接输出sReturn=sReturn&vArray(ubound(vArray))ExitDoendififiStart>7thenexitdo'如果需要生成几个数,就把7改成几,大于数组元素的个数,将输出速度的元素个数(这个例子是35)LoopmsgboxsReturn'msgbox输出结果endsub'==================

5、============================================================================'方法二PrivateSubCommand1_Click()Dima(35)AsIntegerFori=0To35way1:Randomizea(i)=Int(Rnd()*36)+1Ifi>1ThenForp=0Toi-1Ifa(p)=a(i)Then'‘与前面的对比,如果有重复,重新随机GoToway1EndIfNextpEndIfPrinta

6、(i);'打印NextiPrint""'打印EndSub'=========================================================================================='方法三如果楼主是要产生0-9等10个不重复的随机数的话,在随机数范围和个数相等资料的情况下,楼上的方法都无异于散弹打鸟。在最不利情况下时间将无限延长,特别是对更多随机数的时候。以下提供两种思路:1.实际上我们只要确定了其中9个数字

7、那么第10个数字根本不用去想;确定8个,那么随机只在2个数之间,以此类推,使用动态数组如a(),先用for将10个数字加入,然后开始rnd*ubound(a)取得其中一个,放入数组b,再将该数字从a数组中剔除。速度:(n+n^2)/22.只需要得到10个无序排列的数字即可,没必要去一直产生随机数,只要打乱顺序即可。在数组a中加入10个数字,然后开始for循环10次,每次产生一个10以内的随机数,然后将循环次数i与随机数的位置互换。速度:n'===================================

8、============================================================='方法四关于随机数的不重复求取OptionBase1PrivateSubCommand1_Click()RandomizeTimerDimA(1To10)AsInteger'数组MDimB(1To8)AsSt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。