生成长度为 8 个字符的随机单词列表的函数

Function to generate random list of words which are 8 characters long

我正在使用 Classic ASP,并且有一个 MySQL table ("j_un2"),其中包含 6,318 个随机单词,总计数永远不会改变。 table 中的 ID 是无缝的。

我需要生成由 2 个单词组成的 5 个随机串联字符串的列表,其中字符串的总长度为 8 个字符。

几天前我已经通过以下方式获得了一些非常有用的帮助:

根据我收到的帮助,我写了这个简单的函数来生成8个字符的随机单词组合:

<%
Function f1(str)
    found = "no"
    do while found <> "yes"
        rand1 = Int((Rnd * 6138) + 1)
        rand2 = Int((Rnd * 6138) + 1)
        SQL = "SELECT CONCAT(w1.fld_un, w2.fld_un) word FROM j_un2 w1 , j_un2 w2 WHERE w1.fld_id = "&rand1&" AND w2.fld_id = "&rand2&""
        set pRS = oConn.Execute(SQL)
        word = pRS("word")
        if len(word) = str then 
            found = "yes"
            f1 = word
        end if
    Loop
End Function

for i = 1 to 5
    bob = f1(8)
    response.write bob & "<br />"
next
%>

运行速度非常快,不到 1 秒即可运行,非常棒。

但是,它生成的单词总是以相同的顺序排列 - 例如

digpills
grincost
grownjaw
jonesbin
cloudme

如果我刷新页面,它会以相同的顺序生成单词。我知道 table 中有数百个单词,它们将组合成一个八个字符长的字符串,所以并不是数据库中没有足够的单词。

如果我这样做,例如这个:

for i = 1 to 5
    bob = f1(8)
    response.write bob & "<br />"
next

for i = 1 to 5
    bob = f1(8)
    response.write bob & "<br />"
next

for i = 1 to 5
    bob = f1(8)
    response.write bob & "<br />"
next

for i = 1 to 5
    bob = f1(8)
    response.write bob & "<br />"
next

然后它将生成 20 个随机的 8 个字符长的组合,但是同样,这 20 个总是以相同的顺序排列。

我不是一个非常聪明的程序员 - 我是否遗漏了什么,因为我不知道如何在每次刷新页面时获得一个完全随机的列表。

您需要使用 "Randomize" 来为您的 ID 每次获取不同的号码。

Dim max,min
max=100
min=1
Randomize
response.write(Int((max-min+1)*Rnd+min))

更多信息here