生成长度为 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
我正在使用 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