非重复随机数

这是一个简单的VB6函数,用于生成指定范围内的随机数,而无需重复任何数字。

全新,仅经过简短测试。 使用风险自负。 :)

Option Explicit 
Private UsedNumber As New Collection
Private Const MaxAttempts As Long = 150
Private Const Zero As Long = 0
Private Const One As Long = 1 
Public Function RandomNonRepeatingBetween(ByVal LowerLimit As Long, ByVal UpperLimit As Long) As Long
  ' Generate a pseudo-random number between the specified bounds.
  ' Never return one which has already been used.
  ' Don't forget to use Randomize at least once before calling
  ' this function (but not EVERY time, if calling repeatedly). 
  ' The record of used numbers will be cleared only when the
  ' caller specifically requests it by passing zero as both the
  ' upper and lower bounds. 
  ' If it is not possible to satisfy the request (for instance,
  ' if all numbers in the requested range have already been
  ' used, then error 17 ("Can't perform requested operation")
  ' will be raised. Caller should allow for this and handle
  ' it as appropriate. 
  ' Note, for the moment it will simply try up to 150 times, I
  ' haven't worked out the code yet to do a proper check for
  ' whether any numbers are left in the range. 
  ' If lower/upper limit are backward, swap them around.
  Dim Temp As Long
  Dim Attempts As Long 
  If LowerLimit > UpperLimit Then
    Temp = LowerLimit
    LowerLimit = UpperLimit
    UpperLimit = Temp
  End If 
  ' Clear memory if caller requests it.
  If LowerLimit = Zero And UpperLimit = Zero Then
    Do While UsedNumber.Count > Zero
      UsedNumber.Remove One
    Loop
  End If 
  On Error Resume Next
  Do
    Temp = LowerLimit + Rnd * (UpperLimit - LowerLimit)
    UsedNumber.Add Temp, Format(Temp)
    If Err.Number = Zero Then
      RandomNonRepeatingBetween = Temp
      Exit Do
    End If
    Err.Clear
    Attempts = Attempts + One
  Loop While Attempts < MaxAttempts
  Err.Clear
  On Error GoTo 0
End Function

From: https://bytes.com/topic/visual-basic/insights/671880-non-repeating-random-numbers

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值