2016-06-16 5 views
0

N長とM個の可能な文字列を含む文字列リストを生成する必要があります。現在私はPHP/XAMPPを使用しています。文字列リスト(n個の長さ)をm個の可能な文字で生成する

私の機能は、62個の可能な文字(a-z、A-Z、0-9)および最大4文字の文字列を生成するのに最適です。しかし、長い文字列を生成したいときは、メモリが不足しています。

メモリ制限を設定しましたが、メモリが不足しています。

ini_set('memory_limit', '-1'); 

エラー私が取得:

Fatal error: Out of memory (allocated 1858600960) (tried to allocate 36 bytes) in C:\xampp\htdocs\index.php on line 51 

どのように私はこの問題を解決することができますか?文字列リストを生成する際のパフォーマンスを向上させるために別の言語に切り替える必要がありますか?

EDIT、私が働いているコード:

http://pastebin.com/f6pA6Ra0 
+0

私は私はあなたが正規表現を使用して、再帰的な取得algoritmthと思うので、あなたが、あなたのコードをリファクタリングが必要だと思います。 p.s.私の英語には申し訳ありません。 – Naumov

+0

@Naumov、あなたの答えに感謝します。正規表現は使用していませんが、使用している関数は再帰的です – daniel

+2

コードを入力してください。 –

答えて

0

あなたは、可能な文字としてMと5長さのランダムな文字列を取得しようとしていますか?

、私は、この文字の配列と5の長さ916'132'832可能性(^ 5 62)であり、一つ一つの可能​​性を(Mのランダムな要素を5回服用はなく、のアレイを作製する提案!)

ここでは、サイズを定義できるランダムな文字列を返す非再帰関数です。

function sampling($size){ 
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; 
    $output = ''; 
    $charLength = strlen($chars) - 1; 
    for ($i = 0; $i < $size; $i++) { 
     $n = rand(0, $charLength); 
     $output .= $chars[$n]; 
    } 
    return $output; 
} 

私はあなたの意図を誤解し、あなたは本当に申し訳ありませんが、すべての可能性を取得したい場合;)

関連する問題