51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3063|回复: 8
打印 上一主题 下一主题

[原创] 产生随机数的问题。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-4-4 11:03:51 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在VBScript的语言参考手册中有这么一条:
Randomize [number]

Note   To repeat sequences of random numbers, call Rnd with a negative argument immediately before using Randomize with a numeric argument. Using Randomize with the same value for number does not repeat the previous sequence.
即:
注意 :要重复随机数的序列,请在使用数值参数调用 Randomize 之前,立即用负值参数调用 Rnd。使用相同的 number 值的 Randomize 不能重复先前的随机数序列。

我用代码试验:
Randomize(10)
msgbox rnd(10)
产生的是总是第一个产生的随机数,这是不是和上面的不相符?
而用
Randomize  ‘ 这是系统时间产生的随机数
msgbox rnd(10)
产生的是随机数
而对于第一句不是太理解,是不是说
msgbox rnd(-1)
Randomize
msgbox rnd(10)
可这样产生的仍然是随机数。
应该怎么理解?

thanks
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-13 14:04
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]测试排长

    9#
    发表于 2010-8-26 09:00:35 | 只看该作者

    回复 2# 的帖子

    标准答案。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2007-8-14 13:08:03 | 只看该作者
    其实应该多谢你才对
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2006-4-4 15:11:36 | 只看该作者
    谢谢各位,最初的问题搞清楚了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2006-4-4 15:11:02 | 只看该作者
    While x<10
      rnd(-1)
      Randomize (10)
      msgbox rnd(10)
      x = x+1
    Wend

    通过这样的代码运行出来是10个一样的数,这好像就说明了:要重复随机数的序列,请在使用数值参数调用 Randomize 之前,立即用负值参数调用 Rnd。这一条。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2006-4-4 15:03:55 | 只看该作者
    Randomize uses number to initialize the Rnd function's random-number generator, giving it a new seed value.
    是不是系统在第一次运行时产生了一个被用来计算随机数的种子,而在之后的运算中没有产生新的种子,所以之后的随机数都一样(这样的情况和没有产生新种子的情况是一样的),那使用相同的 number 值的 Randomize在每次不同的运行时会产生不同的随机数呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2006-4-4 14:54:45 | 只看该作者
    如果换成是循环来看:
    x = 0
    While x<10
      Randomize (10)
      msgbox rnd(10)
      x = x+1
    Wend

    这样他就是产生了不同的十个随机数,这样好像就证明了:使用相同的 number 值的 Randomize 不能重复先前的随机数序列。
    但是新的问题是:当我在这次循环完成后,重新调用这个函数,结果得到的十个随机数又是和上一次产生的10个随机数是同样的,为什么会是这样的结果?why?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2006-4-4 13:43:46 | 只看该作者
    对不起,我不是问的产生随机数的公式,这个公式我知道,我是想问一下VBScript的语言参考手册中的note的一个问题,any way,thank you all the same。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2#
    发表于 2006-4-4 13:07:34 | 只看该作者
    公式是:Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
    upperbound是最大数,lowerbound是最小数
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-8 21:53 , Processed in 0.069446 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表