zoukankan      html  css  js  c++  java
  • 不重复随机数

    1、不重复随机数1

    生产[lowerbound,upperbound]的随机数,核心代码:Int((upperbound - lowerbound + 1) * Rnd + lowerbound),示例代码如下:

    Sub RndNumNoRepeat1()
        Dim dic
        Dim i&
        Set dic = CreateObject("scripting.dictionary")
        Randomize (Timer)
        Do Until dic.Count = 20
            i = Int((100 - 50 + 1) * Rnd + 50)
            dic(i) = ""
        Loop
        [a2].Resize(dic.Count, 1) = Application.Transpose(dic.keys)
    End Sub

    2、不重复随机数2

    这个算法比较巧妙,需要细细体会,才能知道真谛。这个算法不会重复产生随机数,但需要一个占位数组。

    比较适合输出范围之内所有数值的场合,比如,随机发牌,示例代码如下(生成20个1-100的不重复随机数)

    Sub RndNumNoRepeat2()
        Dim RndNum&, i&
        Dim TempArr, arr
        Randomize (Timer)           '初始化随机数生成器
        ReDim TempArr(0 To 99)      '产生一个随机数列
        ReDim arr(0 To 19, 0 To 0)
        For i = 0 To 99
            TempArr(i) = i
        Next
        For i = 99 To 80 Step -1
            RndNum = Int(i * Rnd)
            arr(99 - i, 0) = TempArr(RndNum) + 1
            TempArr(RndNum) = TempArr(i)
        Next
        [c2].Resize(UBound(arr) + 1, 1) = arr
    End Sub

    3、不重复随机数3

    每产生一个随机数,就和已有的比较,如果已经存在,则重新产生比较适合从一个大范围里面抽出一小部分数据。

    比如,从题库中抽取试题,示例代码(生成20个1-100的不重复随机数)

    Sub RndNumNoRepeat3()
        Dim RndNum&, i&, j&, k&
        Dim TempArr, arr
        Randomize (Timer)           '初始化随机数生成器
        ReDim TempArr(0 To 19)
        ReDim arr(0 To 19, 0 To 0)
        j = 100
        '
        k = 0
        Do While k < 20
            RndNum = Int(j * Rnd) + 1
            TempArr(k) = RndNum
            arr(k, 0) = RndNum
            For i = 0 To k - 1
                If TempArr(i) = RndNum Then Exit For
            Next
            If i = k Then k = i + 1
        Loop
        [e2].Resize(UBound(arr) + 1, 1) = arr
    End Sub
  • 相关阅读:
    MyBatis---集合查询(一对多)
    MyBatis---简单关系查询
    MyBatis---简介
    MyBatis---简单增删改查的带事物的例子
    log4j.properties配置文件详解
    Hibernate---实体类注释简介
    Hibernate---数据操作示例BY实体类注释
    Hibernate---数据操作示例BY实体映射文件
    JDBC---java与数据库中数据类型的对应关系
    Hibernate---session
  • 原文地址:https://www.cnblogs.com/Stefan-Gao/p/14300776.html
Copyright © 2011-2022 走看看