- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
..
VB生成不重复的随机数
VB生成不重复的随机数
我的建议是:第一步、先做一个数组,存上这35个数(可以不是连续的数,也可以是人名、字符串什么的);第二步、随机生成一个1-35之间的数,输出;第三步:把这个数和数组的第一个单元交换;第四步、从数组的第2-35之间随机抽取第二个数,输出;第五步、把这随机抽取的第二个数和数组的第二个单元内容呼唤;第六步、随机抽取第三个数,输出。。。。。重复到从第35-35个数之间随机抽取一个数,这时直接输出最后一个就行了。
程序如下(VB6):
工程里默认的窗体上,画一个Command1,粘贴程序:
option explicit
private vArray(1 to 35) as currency #39;定义数组个数
private sub command1_click()
test
end sub
private sub InitArray()
dim i as long
#39;给数组赋值
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 #39;设置随机因子,使其每次运行程序的随机数都不一样
iStart=1
do
iPos=int(rnd*(ubound(vArray)-iStart+1))+iStart #39;产生iStart到35(35取自vArray的上标)之间的整数
sReturn=sReturn amp; vArray(iPos) amp; vbcrlf #39;输出
#39;交换单元内容
vTemp=vArray(iStart)
vArray(iStart)=vArray(iPos)
vArray(iPos)=vTemp
iStart=iStart+1 #39;下次随机生成时,少生成一个
if iStartgt;=ubound(vArray) then
#39;最后一个了,直接输出
sReturn=sReturn amp; vArray(ubound(vArray))
Exit Do
end if
if iStartgt;7 then exit do #39;如果需要生成几个数,就把7改成几,大于数组元素的个数,将输出速度的元素个数(这个例子是35)
Loop
msgbox sReturn #39;msgbox 输出结果
end sub
#39;==============================================================================================
#39;方法二
Private Sub Command1_Click()
Dim a(35) As Integer
For i = 0 To 35
way1:
Randomize
a(i) = Int(Rnd() * 36) + 1
If i gt; 1 Then
For p = 0 To i - 1
If a(p) = a(i) Then #39;‘与前面的对比,如果有重复,重新随机
GoTo way1
End If
Next p
End If
Print a(i); #39;打印
Next i
Print quot;quot; #39;打印
End Sub
#39;==========================================================================================
#39;方法三
如果楼主是要产生0-9等10个不重复的随机数的话,在随机数范围和个数相等的情况下,楼上的方法都无异于散弹打鸟。在最不利情况下时间将无限延长,特别是对更多随机数的时候。
以下提供两种思路:
1.实际上我们只要确定了其中9个数字那么第10个数字根本不用去想;
确定8个,那么随机只在2个数之间,以此类推,使用动态数组如a(),先用for将10个数字加入,然后开始rnd*ubound(a)取得其中一个,放入数组b,再将该数字从a数组中剔除。速度:(n+n^2)/2
2.只需要得到10个
您可能关注的文档
- 《课堂教学中培养学生创造性思维能力研究》-开题报告.doc
- 《走进心理学》-第二单元小测验.doc
- 《说文解字序》-及其翻译.doc
- 《语言学纲要》-及试题答案.doc
- 《语言学教程》-中文笔记(完整).doc
- 《诗经》-题库.doc
- 《设备管理控制程序》-.doc
- 《辉煌》-第一集 解说词.doc
- 《艺术学概论》-读书笔记.doc
- 《语言教学流派第二版》-自己整理笔记.doc
- 空间向量的数量积运算课件2025-2026学年高二上学期数学人教A版选择性必修第一册.pptx
- 平面向量的概念课件2024-2025学年高一下学期数学人教A版必修第二册.pptx
- 直线与平面垂直+课件2024-2025学年高一下学期数学人教A版必修第二册.pptx
- 两角差的余弦公式课件2025-2026学年高一上学期数学人教A版必修第一册.pptx
- 函数的零点与方程的解课件2025-2026学年高一上学期数学人教A版必修第一册.pptx
- 奇偶性的应用(对称性、周期性)课件2025-2026学年高一上学期数学人教A版必修第一册.pptx
- 函数的单调性课件2025-2026学年高二上学期数学人教A版选择性必修第二册.pptx
- 函数的零点与方程的解课件高一上学期数学人教A版必修第一册.pptx
- 函数y=Asin(ωx++φ)(课件)2025-2026学年高一上学期数学(人教A版必修第一册).pptx
- 正弦函数、余弦函数的性质课件2025-2026学年高一上学期数学人教A版必修第一册.pptx
最近下载
- 《学前教育政策法规与教师职业道德》学前教育专业全套教学课件.pptx
- 黑龙江工商学院《高等数学下》2025 - 2026学年第一学期期末试卷(A卷).docx VIP
- 2023-AI行业:华为+AI大模型开源生态及大模型平台实践.pptx VIP
- 地中海建筑风格(The-Mediterranean).ppt VIP
- 黑龙江工商学院《高等数学(D)》2025 - 2026学年第一学期期末试卷.docx VIP
- 水利部考试历年真题——水利基础知识试题集.docx VIP
- Unit 1 Home (Integration) 课件(共17张PPT)2025年七年级下册《英语》译林版(含音频+视频).pptx VIP
- 国家开放大学本科《人文英语4》一平台机考总题库[珍藏版].pdf
- 2025山东大学(威海)教务处非事业编制岗位招聘1人考试历年真题汇编附答案解析.docx VIP
- 2025高考物理专题复习-人船模型(共20张ppt).pptx VIP
原创力文档


文档评论(0)