VB 如何生成50-100之间的随机整数?

如题 也就是任意范围之内的随机数?
最好有实际例子

如果只是取一个数的话,楼上几位朋友的方法都可以,如果是想取一组数的话,给你一个函数和例子:

Private Sub Command1_Click()
Dim lngArr() As Long
Dim i As Integer
Dim intCount As Integer

lngArr = GetNoRepeatRnd(50, 100)
intCount = UBound(lngArr)
For i = 1 To intCount
Debug.Print lngArr(i)
Next
End Sub

'************************************************
'** 函数名称: GetNoRepeatRnd
'** 函数功能: 产生无重复的随机数
'** 参数说明:
'** lngMinNum 要生成的随机数的最小值
'** lngMaxNum 要生成的随机数的最大值
'** 函数返回:
'** 返回一下标始终为1,上标为lngMaxNum - lngMinNum + 1的随机数列
'** 参考实例:
'** 生成从 1 到 50 之间的随机数
'** Dim lngRnd() As Long
'** lngRnd = GetNoRepeatRnd(1, 50)
'************************************************
Public Function GetNoRepeatRnd(ByVal lngMinNum As Long, ByVal lngMaxNum As Long) As Variant
Dim lngCyl As Long ' 记数器
Dim lngRnd As Long ' 当前产生的随机数
Dim lngTemp As Long ' 临时用来交换数据
Dim lngNumber As Long ' 数组的数量
Dim lngReturn() As Long ' 要返回的数组

'// 初始化随机序列
Randomize
lngNumber = lngMaxNum - lngMinNum + 1
'// 重定义数组
ReDim lngReturn(lngNumber)

'// 给数组赋值,从 lngMinNum 到 lngMaxNum
For lngCyl = lngMinNum To lngMaxNum
lngReturn(lngCyl - lngMinNum + 1) = lngCyl
Next

For lngCyl = 1 To lngNumber
'// 取得一个随机数
lngRnd = Int(Rnd * (lngNumber) + 1)

'********** 数据交换过程 **********
'// 取得当前序号(lngCyl)数组的值
lngTemp = lngReturn(lngCyl)
'// 将当前序号和随机号的内容交换
lngReturn(lngCyl) = lngReturn(lngRnd)
lngReturn(lngRnd) = lngTemp
'**********************************
Next
GetNoRepeatRnd = lngReturn
End Function
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-09-05
这个例子可以解决你的问题:

Private Sub Command1_Click()
Dim i As Integer
i = Int((100 - 50 + 1) * Rnd + 50)

Print i
End Sub

为了生成某个范围内的随机整数,可使用以下公式:

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。
第2个回答  2006-09-05
randomize timer
dim i as integer
i=rnd()*50+50
第3个回答  2006-09-05
randomize
num = rnd * 51 + 50
相似回答