不重复随机数生成器

不重复随机数生成器

问:如何产生不重复随机数
  1. 答:首先需要使用:Randomize[number] 语句,初始化随机数生成器。如果忽略了数值参数number,Randomize自动使用Timer函数的返回值作为新的随机数种子值。然后需要使用Rnd[(number)]函数,生成小于 1 但大于或等于 0 的随机值。为了生成某个范围内的随机整数,可使用以下公式:Int((upperbound - lowerbound + 1) * Rnd + lowerbound)这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。例子:Dim MyValueRandomize ' 对随机数生成器做初始化。MyValue = Int((6 * Rnd) + 1) '生成 1 到 6 之间的随机数值。注意:Rnd函数中的参数number决定了生成随机数的方式。若想得到重复的随机数序列,可以不使用Randomize语句,使用负参数值的Rnd函数即。若想得到不重复的随机数序列,必须使用Randomize语句,而且Rnd函数的参数可以大于0或等于0或者省略,或者与Randomize语句中的number相同。实际上,你的程序已经是产生非重复的随机数序列了,只不过下面的代码有点问题:If blnseeded = False ThenRandomizeblnseeded = TrueEnd Ifblnseeded是个未声明的Variant的局部变量,程序每次调用这个函数时,始终满足等于false的条件,所以Randomize始终得到执行,加之你使用了无参的Rnd函数,所以产生的已经是随机数序列了。
问:VBA生成不重复的随机数
  1. 答:随机函数rand(),既然说是随机了,就比较难以受人控制。如果硬要,要么是手动筛选,要么就是使用vba来实现自动筛选了。不过一般来说,如果随机数取的不多的情况下,是不大可能出现重复的。
  2. 答:产生20个1-100之间的不重复随机数
    Public
    Sub
    RndNumberNoRepeat1()
    Dim
    RndNumber,
    temp(20),
    i,
    k,
    Maxrec
    As
    Integer
    Randomize
    (Timer)
    '初始化随机数生成器
    Maxrec
    =
    100
    '
    从A21开始输出随机数
    k
    =
    Do
    While
    k
    <
    20
    RndNumber
    =
    Int(Maxrec
    *
    Rnd)
    +
    1
    temp(k)
    =
    RndNumber
    Cells(k
    +
    21,
    1)
    =
    RndNumber
    For
    i
    =
    To
    k
    -
    1
    If
    temp(i)
    =
    RndNumber
    Then
    Exit
    For
    Next
    i
    If
    i
    =
    k
    Then
    k
    =
    i
    +
    1
    'MsgBox
    "随机数:"
    &
    RndNumber
    Loop
    End
    Sub
问:求高手做一个简单的flash的随机数的生成器,号码区间可以自己定义,一次抽取一个,不重复出现,
  1. 答:先说下思路 = =
    首先定义一随机函数。。就是那种能输出最大值最小值之间的。。我肯定LZ会写 暂且叫他FUNC
    然后定义一关闭数组 叫他CLSARR
    每当出现一个新的随机数是。就把他放在CLSARR里面。。生成新的随机数时。让新的随机数和CLSARR里面的所有元素一一比较。。如果都不相同。就输出这个数。并把这个数也写在CLSARR中。。就能实现无重复生成随机数
不重复随机数生成器
下载Doc文档

猜你喜欢