蚂蚁文库
换一换
首页 蚂蚁文库 > 资源分类 > PDF文档下载
 

VB生成不重复随机数

  • 资源ID:54767723       资源大小:220.22KB        全文页数:7页
  • 资源格式: PDF        下载权限:游客/注册会员    下载费用:4积分 【人民币4元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信快捷登录 QQ登录  
下载资源需要4积分 【人民币4元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

VB生成不重复随机数

VBVB 生成不重复的随机数生成不重复的随机数 VB 生成不重复的随机数 我的建议是第一步、先做一个数组,存上这 35 个数(可以不是连续的数,也 可以是人名、字符串什么的) ;第二步、随机生成一个1-35 之间的数,输出;第 三步把这个数和数组的第一个单元交换;第四步、从数组的第 2-35 之间随机 抽取第二个数,输出;第五步、把这随机抽取的第二个数和数组的第二个单元内 容呼唤;第六步、随机抽取第三个数,输出。 。 。 。 。重复到从第35-35 个数之间随 机抽取一个数,这时直接输出最后一个就行了。 程序如下(VB6) 工程里默认的窗体上,画一个 Command1,粘贴程序 option explicit private vArray1 to 35 as currency 定义数组个数 private sub command1_click test end sub private sub InitArray dim i as long 给数组赋值 for i1 to 35 varrayii 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设置随机因子,使其每次运行程序的随机数都不一样 iStart1 do iPosintrnd*uboundvArray-iStart1iStart 产生iStart到35 (35取自vArray 的上标)之间的整数 资料 sReturnsReturn vArrayiPos vbcrlf 输出 交换单元内容 vTempvArrayiStart vArrayiStartvArrayiPos vArrayiPosvTemp iStartiStart1 下次随机生成时,少生成一个 if iStartuboundvArray then 最后一个了,直接输出 sReturnsReturn vArrayuboundvArray Exit Do end if if iStart7 then exit do 如果需要生成几个数,就把 7 改成几,大于数组元 素的个数,将输出速度的元素个数这个例子是 35) Loop msgbox sReturn msgbox 输出结果 end sub 方法二 Private Sub Command1_Click Dim a35 As Integer For i 0 To 35 way1 Randomize ai IntRnd * 36 1 If i 1 Then For p 0 To i - 1 If ap ai Then‘与前面的对比,如果有重复,重新随机 GoTo way1 End If Next p End If Print ai;打印 Next i Print 打印 End Sub 方法三 如果楼主是要产生 0-9 等 10 个不重复的随机数的话,在随机数范围和个数相等 资料 的情况下,楼上的方法都无异于散弹打鸟。在最不利情况下时间将无限延长,特 别是对更多随机数的时候。 以下提供两种思路 1.实际上我们只要确定了其中 9 个数字那么第 10 个数字根本不用去想; 确定 8 个,那么随机只在 2 个数之间,以此类推,使用 动态数组如 a,先用 for 将 10 个数字加入,然后开始 rnd*ubounda取得其中一 个,放入数组 b,再将该数字从 a 数组中剔除。速度nn2/2 2.只需要得到 10 个无序排列的数字即可,没必要去一直产生随机数,只要打乱 顺序即可。在数组 a 中加入 10 个数字,然后开始 for 循环 10 次,每次产生一个 10 以内的随机数,然后将循环次数 i 与随机数的位置互换。速度n 方法四 关于随机数的不重复求取 Option Base 1 Private Sub Command1_Click Randomize Timer Dim A1 To 10 As Integer数组 M Dim B1 To 8 As String数组 N Dim i As Integer, k As Integer, t As Integer For i 1 To 10 Ai i Next For i 1 To 10数组打乱 t Ai k FixRnd * 10 1 Ai Ak Ak t Next For i 1 To 8 从 M 中随机取出 N 个数,不重复 Bi Ai Next Label1.Caption JoinB, , End Sub 方法五 Private Sub Command2_Click Randomize Timer Dim Dimension8 Dim i As Byte, j As Byte Randomize Timer 资料 For i 1 To 8 Dimensioni FixRnd * 10 1 Next i AFor i 1 To 7 For j i 1 To 8 If Dimensioni Dimensionj Then Dimensioni FixRnd * 10 1 GoTo A End If Next j Next i Label1.Caption JoinDimension, , End Sub Private Sub Command3_Click End End Sub 方法六 (最快 还有种方法是随机取数组中一个数,取出后将该元素与数组最后一个元素交换,然 后随机上限减一 然后就是字符串的速度了 .一次分配足够大的字符串 ,而不是用连接字符 串会快很多 Option Explicit Private

注意事项

本文(VB生成不重复随机数)为本站会员(sunhongz127)主动上传,蚂蚁文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蚂蚁文库(发送邮件至2303240369@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们


网站客服QQ:2303240369

copyright@ 2017-2027 mayiwenku.com 

网站版权所有  智慧蚂蚁网络

经营许可证号:ICP备2024020385号



收起
展开