2012-08-27 6 views
0

나는 여전히 PHP에서 로키이고 나는 2000 여섯 자리 고유 번호를 생성 싶습니다.PHP로 2000 6 자리 고유 번호를

<?php 
$six_digit_random_number = mt_rand(100000, 999999); 
print_r($six_digit_random_number); 
?> 

위의 간단한 스크립트를 작성하여 해당 숫자가 6 자리 숫자인지 확인했습니다. 이제 나는 배열로 인쇄 된 중복되지 않은 2000 개가 필요합니다. 어떻게 처리합니까?

+0

해결하려는 문제에 대해 자세히 알려주십시오. – Sylverdrag

+0

콜로라도의 Rockie (s) 팬은 PHP와 관련이 있습니까? "루키"일까요? – CubicleSoft

답변

0

을 다음 내가 이런 식으로 할 거라고 :이 코드는 다른 예보다 훨씬 더 빨리 될 것

<? 
// Make an empty array 
$numbers = array(); 

// Loop while there aren't enough numbers 
while (count($numbers) < 2000) { 

    $random_number = mt_rand(100000, 999999); 

    if (!in_array($random_number, $numbers)) { 
      // This adds the number to the array 
     $numbers[] = $random_number; 
    } 

} 

foreach ($numbers as $number) { 
    echo $number."\n"; // or <br /> if you are using as part of page. 
} 

?> 
+0

Thanx mate 이것은 숫자가 중복되지 않았음에도 확실하지 않은 것을 찾고 있습니다. –

+0

이미 중복되지 않았어도 목록에 추가하기 때문에 중복해서는 안됩니다. –

+1

co01! 고맙습니다 :-) 건배! –

3

당신은 같이 갈 수 :

$generated = array(); 
while (count($generated) != 2000) { 
    $new = mt_rand(100000, 999999); 
    if (!isset($generated[$new])) { 
    $generated[$new] = $new; 
    } 
} 

이제 $generated 배열은 2000 고유 한 임의의 숫자가 포함되어 있습니다.

번호가 이미 있는지 확인하기 위해 검색 속도를 높이기 위해 번호 자체를 색인으로 사용하여 배열에 번호를 저장했음을 유의하십시오. 그런 다음 간단한 숫자 인덱스 배열을 원하는 경우에

, 당신은이 변환 할 수있는 :

$generated = array_values($generated); 

을하지만이 필요는 없습니다.

0

시도

$randomeArray=array(); 
while(count($randomeArray)<2000) 
{ 

$six_digit_random_number = mt_rand(100000, 999999); 

if(!in_array($six_digit_random_number,$randomeArray)) 
    { 
    $randomeArray[]=$six_digit_random_number; 
    } 
} 

print_r($randomeArray); 
-1

:

$nums = array(); 
while (count($nums) < 2000) $nums[mt_rand(100000, 999999)] = true; 

필요가 없습니다에 번호가 이미 존재하는지 확인하십시오. 그런 다음 번호를 가져올 수 있습니다.

foreach ($nums as $randnum => $val) 
{ 
    // Do something with the random number here. 
} 

in_array()는 느림입니다. 일치하는 항목이 발견 될 때까지 호출 될 때마다 전체 배열을 반복합니다.이 경우 in_array()가 포함 된 예제는 O (n^2) 연산이 될 것이므로 일치하는 가능성이 희박합니다. isset()은 빠르지 만 여기서는 필요 없으며 count()는 내부 PHP 데이터 구조에 저장되어있는 배열의 크기를 측정하기 때문에 약간의 성능이 저하됩니다.

PHP를 배우면서 유용한 팁이 도움이되기를 바랍니다. isset()과 같은 내장 명령은 함수보다 훨씬 빠르며 어떤 함수가 알고리즘의 성능에 대한 올바른 이해와 함께 어떤 접근에 도움이되는지 이해하는 데 도움이됩니다.

관련 문제