xiaozui 发表于 2011-7-18 10:24:49

求个字典生成器的算法

求个字典生成器的算法,目的用于批量成生指定范围的字符串,不是随机生成,是按顺序来生成的。我想达到的效果是这样
a
b
c
...
z
o
1
2
...
9

aa
ab
ac
...
a9
ba
bb
bc
...
b9
...
...
99999999


请各位大牛支招,谢谢咯

pcbar 发表于 2011-7-18 10:40:47

#include <array.au3>
$a="abcdefghijklmnopqrstuvwxyz1234567890"
$b=StringSplit($a,"",2)
$c=_ArrayCombinations($b,2);2参加组合的元素个数
_ArrayDisplay($c)
以此类推,
不建议这样生成字典。
au3最多支持16 777 216个数组元素。

xiaozui 发表于 2011-7-18 13:45:33

#include
$a="abcdefghijklmnopqrstuvwxyz1234567890"
$b=StringSplit($a,"",2)
$c=_ArrayCombinations ...
pcbar 发表于 2011-7-18 10:40 http://www.autoitx.com/images/common/back.gif


    谢谢超版指点!{:face (88):}
如果不这样生成字典,那有什么好的生成算法推荐呢?

happytc 发表于 2011-7-18 14:31:04

在au3里用大数组会非常慢的.

其实关键是你这样做的目的是啥?
一般没必要把它们一个个产生出来存着

xiaozui 发表于 2011-7-18 15:22:09

在au3里用大数组会非常慢的.

其实关键是你这样做的目的是啥?
一般没必要把它们一个个产生出来存着
happytc 发表于 2011-7-18 14:31 http://www.autoitx.com/images/common/back.gif


是这样的,我公司要我们在一个商务平台上找电话号码资料,手动复制粘贴那速度肯定是很慢的嘛,所以想用au3写个自动获取的程序。我发现那个商务平台上商家的主页都是*.abc.com(*可以是数字、字母单个或组合)这样的形式的,所以才想写段类似字典生成器功能的代码来自动生成这其中的*。希望大牛支招,谢谢

35888894 发表于 2011-7-18 16:22:01

Random
即可...........

happytc 发表于 2011-7-18 23:28:51

回复 5# xiaozui


    原来是这样,所以把目的说出来更重要。
根本不需要你的标题说的那样的方法,的确只需要产生随机数就够了。


Do
        $rNum = Random(48, 122, 1)
        If ($rNum > 57 And $rNum < 65) Or ($rNum > 90 And $rNum < 97) Or $rNum > 122 Then
                ContinueLoop
        Else
                $str = Chr($rNum)
                MsgBox(0, 0, $str)
        EndIf
Until False

xiaozui 发表于 2011-7-19 12:40:05

回复xiaozui


    原来是这样,所以把目的说出来更重要。
根本不需要你的标题说的那样的方法,的确 ...
happytc 发表于 2011-7-18 23:28 http://www.autoitx.com/images/common/back.gif


    谢谢,不过,随机的话,会有重复的。

happytc 发表于 2011-7-19 13:23:33

谢谢,不过,随机的话,会有重复的。
xiaozui 发表于 2011-7-19 12:40 http://www.autoitx.com/images/common/back.gif

这又涉及到你的更进一步目的:代码来自动生成这其中的*
生成这个又是干什么用呢?

3mile 发表于 2011-7-19 16:14:49

是这样的,我公司要我们在一个商务平台上找电话号码资料,手动复制粘贴那速度肯定是很慢的嘛,所以想 ...
xiaozui 发表于 2011-7-18 15:22 http://www.autoitx.com/images/common/back.gif
是收集电话号码,然后发垃圾短信的那种?
以下代码效率极低.慎用
#include <array.au3>

$result=_DIC_Word(3)
_ArrayDisplay($result)

Func _DIC_Word($number);层级,如3则AAA
        $a="abcdefghijklmnopqrstuvwxyz1234567890"
        $b=StringSplit($a,"",2)
        $c=_ArrayCombinations($b,$number)
        Local $count=1,$k=0
        For $i=$number to 1 Step -1
                $count*=$i
        Next
       
        Local $array[$count*($c-1)]

        for $i=1 to $c-1
                $temp=StringSplit($c[$i],"",2)
                $temp_array=_ArrayPermute($temp)
                for $q=1 to $temp_array
                        $array[$k]=$temp_array[$q]
                        $k+=1
                Next
        Next
        Return $array
EndFunc

xiaozui 发表于 2011-7-19 19:40:54

这又涉及到你的更进一步目的:代码来自动生成这其中的*
生成这个又是干什么用呢?
happytc 发表于 2011-7-19 13:23 http://www.autoitx.com/images/common/back.gif


    *.abc.com是某平台商家主页的地址,假设*为aaa的话,那么就抓取aaa.abc.com这个主页的商家信息。如果*为随机生成的话,那么就有可能重复抓取一个商家主页的信息了。

xiaozui 发表于 2011-7-19 21:09:53

是收集电话号码,然后发垃圾短信的那种?
以下代码效率极低.慎用
3mile 发表于 2011-7-19 16:14 http://www.autoitx.com/images/common/back.gif


   
层级为大于4就会出现这种情况...
页: [1]
查看完整版本: 求个字典生成器的算法