2016-06-16 1 views
0

N 길이와 M 개의 가능한 문자로 구성된 문자열 목록을 생성해야합니다. 현재 PHP/XAMPP를 사용하고 있습니다.m 개의 문자로 구성된 문자열 목록 생성 (n 길이)

내 함수는 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 

가 어떻게이 문제를 해결할 수

? 문자열 목록을 생성 할 때 성능 향상을 위해 다른 언어로 전환해야합니까?

편집, 내가 함께 일하고 있어요 코드 :

http://pastebin.com/f6pA6Ra0 
+0

내 생각을 당신은 재귀 얻을 algoritmth. 추신. 미안하다. – Naumov

+0

@Naumov, 답변 해 주셔서 감사합니다. 나는 정규식을 사용하고 있지 않지만 그렇습니다. 사용하고있는 함수는 재귀적인 것입니다. – daniel

+2

코드를 입력하십시오. –

답변

0

당신은 가능한 문자로 M 5 길이 임의의 문자열을 얻기 위해 노력하고있다?

다음으로 나는 임의의 원소 M을 5 번 취하여 매 배열 (이 문자 배열과 길이가 5 인 경우는 916'132'832 가능성 (62^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; 
} 

나는 당신의 의도를 오해하는 경우 그리고 당신이 정말로 미안 해요 모든 가능성 싶어, 나는 당신이 정규식을 사용하여 생각하기 때문에, 당신은 당신의 코드를 리팩토링 필요)