Вообщем задача не на скорую руку, вот пример используя функцию выше, у меня на P4 ушло около
30'ти секунд! на гинерацию всех(?) вариантов от
6 до
7, т.ч можете представить сколько уйдёт на 6-20:
Код:
![Выделить весь код](images/misc/selectcode.png)
$sFile_Content = ""
$iMin_Number = 6
$iMax_Number = 20
$iVars_Count = 0
;Подсчитываем возможное число вариантов для значении 6 - 20.
For $i = $iMin_Number To $iMax_Number
$iVars_Count += _NumberVarsCount($i)
ConsoleWrite($iVars_Count & @CRLF)
Next
;Проходимся столько раз (сколько есть вариантов у 6-20) в цикле и получаем случайные строки содержащие от 6-ти до 20-ти символов.
For $i = 1 To $iVars_Count
$sRandomString = _StringGetRandomString($iMin_Number, $iMax_Number)
While StringInStr($sFile_Content, $sRandomString & @CRLF)
$sRandomString = _StringGetRandomString($iMin_Number, $iMax_Number)
WEnd
$sFile_Content &= $sRandomString & @CRLF
Next
FileWrite("File.txt", $sFile_Content)
Func _StringGetRandomString($iMin=1, $iMax=1)
If $iMax < $iMin Then Return SetError(1, 0, 0)
Local $iRandom
Local $sRet_Str = ''
For $i = 1 To Random($iMin, $iMax, 1)
$sRet_Str &= Chr(Random(33, 255, 1))
Next
Return $sRet_Str
EndFunc
Func _NumberVarsCount($Number)
If Not IsNumber($Number) Then Return SetError(1, 0, $Number)
If $Number > 65 Then Return SetError(2, 0, -1)
Local $iCnt, $iNumber = 1
For $iCnt = 1 To $Number-1
$iNumber *= ($iCnt+1)
Next
Return SetError(0, 0, $iNumber)
EndFunc