版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB生成不重复的随机数VB生成不重复的随机数我的建议是:第一步、先做一个数组,存上这35个数(可以不是连续的数,也可以是人名、字符串什么的);第二步、随机生成一个1-35之间的数,输出;第三步:把这个数和数组的第一个单元交换;第四步、从数组的第2-35之间随机抽取第二个数,输出;第五步、把这随机抽取的第二个数和数组的第二个单元内容呼唤;第六步、随机抽取第三个数,输出。。。。。重复到从第35-35个数之间随机抽取一个数,这时直接输出最后一个就行了。程序如下(VB6):工程里默认的窗体上,画一个Command1,粘贴程序:optionexplicitprivatevArray(1to35)ascurrency'定义数组个数privatesubcommand1_click()testendsubprivatesubInitArray()dimiaslong'给数组赋值fori=1to35varray(i)=inextiendsubprivatesubTest()dimiStartaslongdimiPosaslongdimvTempascurrencydimsReturnasstringInitArrayrandomizetimer'设置随机因子,使其每次运行程序的随机数都不一样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=iStart+1'下次随机生成时,少生成一个ifiStart>=ubound(vArray)then'最后一个了,直接输出sReturn=sReturn&vArray(ubound(vArray))ExitDoendififiStart>7thenexitdo'如果需要生成几个数,就把7改成几,大于数组元素的个数,将输出速度的元素个数(这个例子是35)LoopmsgboxsReturn'msgbox输出结果endsub'=============================================================================================='方法二PrivateSubCommand1_Click()Dima(35)AsIntegerFori=0To35way1:Randomizea(i)=Int(Rnd()*36)+1Ifi>1ThenForp=0Toi-1Ifa(p)=a(i)Then'‘与前面的对比,如果有重复,重新随机GoToway1EndIfNextpEndIfPrinta(i);'打印NextiPrint""'打印EndSub'=========================================================================================='方法三如果楼主是要产生0-9等10个不重复的随机数的话,在随机数范围和个数相等Ary(i)=i+1NextRandomize''计算并为s分配足够的大小,下面是当n=MAX_N+1时最终的s的长度的精确值'i=MAX_N+1:p=0:ps=9'DoUntili<=9'p=p+1'n=n+ps*p'ps=ps*10'i=i\10'Loop'n=n+(p+1)*(MAX_N-CLng(10^p)+2)+MAX_N's=String$(n,",")n=MAX_N\2'要取的个数,取所有的话用MAX_N+1'计算并为s分配足够的大小s=String$(n*Len(CStr(MAX_N+1)),",")'分配足够大的内存,以后再减p=0:ps=1DoUntilp>=ni=CLng(Rnd*(MAX_N-p))sTemp=CStr(Ary(i))Mid$(s,ps,Len(sTemp))=sTempps=ps+Len(sTemp)+1Ary(i)=Ary(MAX_N-p)'如果不想破坏数据,把这里改成2个元素交换,而不是简单赋值p=p+1'抛弃数组最后一个元素Loops=Left$(s,ps-2)'去掉多余的部分t=timeGetTime-tDebug.Prints'输出Debug.PrintCStr(t),Len(s)EndSub'==============================================================='方法七:(最快)OptionExplicitOptionBase1PrivateDeclareFunctiontimeGetTimeLib"winmm.dll"()AsLongConstNums=10000PrivateSubCommand1_Click()DimtAsLongDimNum(Nums)AsLongDimi,nAsLongDimsAsStringt=timeGetTimeRandomizeFori=1ToNumsn=I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度个人房屋租赁押金合同范本12篇
- 2024年度陕西省公共营养师之二级营养师题库附答案(典型题)
- 二零二五年度生态农业种植基地租赁合同细则4篇
- 自我保护意识在职业规划中的重要性
- 跨学科教育塑造未来职业的基石
- 实训室安全红线事故案例深度解析
- 二零二五年度出差意外伤害免责与责任追溯合同范本4篇
- 二零二五年度储煤场租赁及煤炭检验检测服务合同3篇
- 二零二五版离婚协议书起草与婚姻关系解除法律援助合同4篇
- 2025年度门面租赁合同租赁物使用效果评估与改进协议3篇
- SYT 6968-2021 油气输送管道工程水平定向钻穿越设计规范-PDF解密
- 冷库制冷负荷计算表
- 肩袖损伤护理查房
- 设备运维管理安全规范标准
- 办文办会办事实务课件
- 大学宿舍人际关系
- 2023光明小升初(语文)试卷
- GB/T 14600-2009电子工业用气体氧化亚氮
- 申请使用物业专项维修资金征求业主意见表
- 房屋买卖合同简单范本 房屋买卖合同简易范本
- 无抽搐电休克治疗规范
评论
0/150
提交评论