VB 中怎么用随机函数产生50个10—100之间的互不相同的整数

用VB做... 用VB做 展开
 我来答
秋色烽火
推荐于2017-12-15 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.5万
采纳率:37%
帮助的人:1.2亿
展开全部
思路是先设置一个定额数组 要取的值一一对应位置,每次抽取随机量就对比对应位置的值是否为0 如果不为0 就取 并置为0
直到取完为止
注意的是 待抽数组的长度一定要大于或等于要抽的数量 否则有可能进入死循环

Private Sub Form_Click()
'定义一个数组,两个变量
Dim a%(90), rNum%, rid%
'循环90次
For i = 0 To 90
'为数组赋值,每个值为当前i+10 即对应10-100
a(i) = i + 10
Next

'Do while循环 条件为小于50
Do While rid < 51
Randomize '初始化随机种子
rNum = Int(Rnd * 91) '生成随机量 0-90
If a(rNum) <> 0 Then '判断对应数组位置值是否为0
Print rNum '不为0 输出
a(rNum) = 0 '并置对应位为0
rid = rid + 1 '计数器加1
End If
DoEvents '返还系统控制
Loop
End Sub
superman2008cc
2008-04-02 · TA获得超过294个赞
知道答主
回答量:118
采纳率:0%
帮助的人:105万
展开全部
最简单的方法就是利用数组,产生一个数以后就判断前面是否已经有这个数,如果有,那么重新生成这个数。
Private Sub Form_Click()
Dim a(1 To 50) As Integer, i As Integer, j As Integer
Randomize
For i = 1 To 50
a(i) = Int(Rnd * 91 + 10)
For j = 1 To i - 1
If a(i) = a(j) Then i = i - 1
Next j
Next i
For i = 1 To 50
Print a(i);
If i Mod 5 = 0 Then Print
Next i
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxlxxl
2008-04-03 · TA获得超过630个赞
知道小有建树答主
回答量:928
采纳率:0%
帮助的人:503万
展开全部
给你写个函数吧
'生成从iStar开始(包括)到iEnd结束(包括)的iCount个整数的序列,保存到n() as integer数组里
Private Sub NumRnd(iStar As Integer, iEnd As Integer, iCount As Integer, n() As Integer)
Dim i, j
ReDim n(iCount - 1) As Integer

Randomize
n(0) = Int(Rnd * (iEnd - iStar + 1)) + iStar
For i = 0 To iCount - 1
n(i) = Int(Rnd * (iEnd - iStar + 1)) + iStar
For j = 0 To i - 1
DoEvents
If n(j) = n(i) Then i = i - 1: Exit For
Next j
Next i
End Sub
使用方法
dim k() as integer
NumRnd 50, 100, 10, k '生成10个50到100的整数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jn199212
2013-04-04
知道答主
回答量:3
采纳率:0%
帮助的人:4102
展开全部
Private Sub Command1_Click()
Dim a(1 To 50) As Integer, i As Integer, j As Integer
For i = 1 To 50
Randomize
a(i) = Int(Rnd * 90 + 10)
For j = 1 To i - 1
If a(i) = a(j) Then i = i - 1
Next j
Next i
For i = 1 To 50
Print a(i);
n=n+1
if n Mod 5 = 0 Then ‘每行输出5个数
print
End If
Next i
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
勇哥和娴妹
2008-04-02 · TA获得超过118个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:141万
展开全部
randomize()
for i=10 to 100
form1.print int(rnd*(100-10+1)+10)
next
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式