Vb生成一定范围内的随机数(含小数部分)
2016-05-01 22:29
567 查看
下面这个函数,可以生成一定范围内的随机数,可以指定小数位数。
比如 RndBetween (10, 99, 2) 返回 [10.00~99.00] 范围内的随机数。
Function RndBetween(ByVal Lowbound As Long, ByVal Upbound As Long, Optional ByVal Dcml As Integer = 0) As Double
'参数分别是:下限,上限,小数位数(默认值是0,没有小数部分)
'参数过大可能发生溢出错误
'生成指定范围内(含上下边界)的整数: _
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
'多次调用本函数时,允许生成相同的数,但不会生成可重复产生的序列
'最近一次修改:2016-4-27
Static I As Long
I = I + 1
Dim Temp As Long
If Upbound < Lowbound Then
Temp = Upbound
Upbound = Lowbound
Lowbound = Temp
End If
If Dcml < 0 Then Dcml = 0
If Dcml > 255 Then Dcml = 255
'实际上只生成十几位有效数字,除非改用字符连接等方法
Randomize (Timer + I)
' If Dcml = 0 Then
' RndBetween = Int((Upbound - Lowbound + 1) * Rnd + Lowbound)
' Else
' RndBetween = Int((Upbound * 10 ^ Dcml - Lowbound * 10 ^ Dcml + 1) * Rnd + Lowbound * 10 ^ Dcml) / 10 ^ Dcml
' End If
'强制转换类型,避免在上下限相差过大时可能发生溢出错误
If Dcml = 0 Then
RndBetween = Int((CDbl(Upbound) - CDbl(Lowbound) + 1) * Rnd + CDbl(Lowbound))
Else
RndBetween = Int((CDbl(Upbound) * 10 ^ Dcml - CDbl(Lowbound) * 10 ^ Dcml + 1) * Rnd + CDbl(Lowbound) * 10 ^ Dcml) / 10 ^ Dcml
End If
End Function
比如 RndBetween (10, 99, 2) 返回 [10.00~99.00] 范围内的随机数。
Function RndBetween(ByVal Lowbound As Long, ByVal Upbound As Long, Optional ByVal Dcml As Integer = 0) As Double
'参数分别是:下限,上限,小数位数(默认值是0,没有小数部分)
'参数过大可能发生溢出错误
'生成指定范围内(含上下边界)的整数: _
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
'多次调用本函数时,允许生成相同的数,但不会生成可重复产生的序列
'最近一次修改:2016-4-27
Static I As Long
I = I + 1
Dim Temp As Long
If Upbound < Lowbound Then
Temp = Upbound
Upbound = Lowbound
Lowbound = Temp
End If
If Dcml < 0 Then Dcml = 0
If Dcml > 255 Then Dcml = 255
'实际上只生成十几位有效数字,除非改用字符连接等方法
Randomize (Timer + I)
' If Dcml = 0 Then
' RndBetween = Int((Upbound - Lowbound + 1) * Rnd + Lowbound)
' Else
' RndBetween = Int((Upbound * 10 ^ Dcml - Lowbound * 10 ^ Dcml + 1) * Rnd + Lowbound * 10 ^ Dcml) / 10 ^ Dcml
' End If
'强制转换类型,避免在上下限相差过大时可能发生溢出错误
If Dcml = 0 Then
RndBetween = Int((CDbl(Upbound) - CDbl(Lowbound) + 1) * Rnd + CDbl(Lowbound))
Else
RndBetween = Int((CDbl(Upbound) * 10 ^ Dcml - CDbl(Lowbound) * 10 ^ Dcml + 1) * Rnd + CDbl(Lowbound) * 10 ^ Dcml) / 10 ^ Dcml
End If
End Function
相关文章推荐
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- C#定时器和随机数
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua实现split函数
- Lua常用时间函数使用实例
- Lua函数与字符串处理简明总结
- Lua学习笔记之表和函数
- Lua中实现sleep函数功能的4种方法
- Lua函数用法研究
- Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记
- ASP中保留小数点后两位数的方法(使用FormatNumber)