random - VBScript 在循环时生成相同的随机数 - 如何解决?

标签 random asp-classic vbscript

所以我有这个函数,它生成一个随机的数字字符串,长度为 8 个字符。如果每页调用一次,它就会工作,即如果我刷新它将显示一个新数字。

但我想在一个循环中生成其中的许多,并返回相同的数字。我该如何解决这个问题?

Function generateCode()

   pChar = "0123456789"

   pCount = Len(pChar) 

   Dim psw
   psw = ""

   Randomize
   For i = 1 To 8 ' password length
      psw = psw & Mid( pChar, 1 + Int(Rnd * pCount), 1 )
   Next

 generateCode= psw
End Function

现在我认为 Randomize 可能基于当前时间,所以我取出 Randomize 行并在调用 generateCode() 的循环之前调用 Randomize 我 - 仍然没有工作!

最佳答案

Randomize不带任何参数使用系统时间为伪随机数生成器播种。如果您非常快地多次调用它,系统时间将不会改变,因此您将每次使用相同的种子重新初始化 PRNG,给出相同的随机数。

您应该只在您的页面上调用 Randomize 一次,而不是多次。

关于random - VBScript 在循环时生成相同的随机数 - 如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5286337/

相关文章:

java - Android 中的随机数错误

python - 在pygame中创建一个随机门

javascript - 如何在 ASP/vbscript 中解析 XML?

vbscript - 如何在 vbscript 中解压受密码保护的文件?

regex - 为什么我的正则表达式白名单没有捕获括号?

c - 如果我不指定 srand(),rand() 使用什么种子?

cookies - 在 ASP session Cookie 上设置域

jquery - 经典的Asp持久上传和Jquery Ajax

batch-file - 递归搜索子文件夹并删除子文件夹中超过6个月的所有文件

java - 数组的随机洗牌