>  기사  >  백엔드 개발  >  반복되지 않는 난수의 PHP 표현을 생성합니다.

반복되지 않는 난수의 PHP 표현을 생성합니다.

巴扎黑
巴扎黑원래의
2016-11-12 10:52:13953검색

전제:

오늘 누군가가 배열을 생성하고 싶어한다는 게시물을 봤습니다. 이 배열에는 10개의 요소가 있으며, 모두 정수이고 1~60 사이의 반복되지 않는 난수입니다.

물론, 이 질문은 어렵지 않습니다! 아래는 포럼 답변에서 나온 답변입니다.

코드:

Php 코드

<?php   
          function get_randoms($min,$max,$num){  
                 $count = 0;  
                 $res = array();  
                 while($count<$num){  
                        $res[] = mt_random($min,$max);  
                        $res = array_flip(array_flip($res));   
                        $count = count($res);  
                  }  
                  return $res;  
           }  
             
            $result = get_randoms(1,60,10);  
?>



여기서 그는 $count를 사용하여 배열 수를 가져오고 다음과 같습니다. while 루프 결과 배열의 수를 대상 수보다 작게 만듭니다. 이런 방식으로 $count는 대상 숫자의 배열로 얻어집니다.
각 사이클 동안 mt_random($min,$max)을 통해 범위 내의 값을 무작위로 얻어 $res 배열에 저장한 다음 두 번의 키-값 교환, 즉 배열 키 Uniqueness를 통해 중복되지 않도록 보장합니다.

이 로직의 코드를 읽고 난 뒤 깊은 생각을 하지 않을 수 없었습니다. 만약 array_filp 함수를 모른다면 어떻게 하시겠습니까?
직설적으로 말하면, 난수가 중복되지 않도록 키의 고유성을 사용합니다. 그렇다면 이 문제를 단순화할 수 있을까요?

코드:

PHP 코드

<?php   
         function get_randoms($min,$max,$num){  
                $count = 0;  
                $res = array();  
                while($count<$num){  
                       $key = mt_random($min,$max);  
                       $res[$key] = $key;  
                       $count = count($res);  
                 }  
                 return $res;  
          }  
            
           $result = get_randoms(1,60,10);  
 ?>



이런 식으로 배열 키의 고유성을 통해 완전히 해결했습니다. 이 질문입니다. array_flip은 전혀 사용되지 않습니다.

위를 통해 저는 두 가지 점을 제시했습니다.

1: PHP는 수많은 내장 함수를 제공하기 때문에 실행 효율성이 매우 높습니다. 문제가 발생하면 이를 활용하여 문제를 해결하려고 최선을 다합니다. 이것은 편리하고 빠릅니다. 그러므로 우리는 일상 업무에서 일하고 공부하며 가능한 한 많은 PHP 기능을 축적하고 깊이 이해합니다.

2: PHP는 많은 내장 함수를 제공하고 실행 효율성도 매우 높지만 효율성은 높지만 여전히 실행하는 데 시간이 걸린다는 점을 지적하고 싶습니다. 문제에 직면했을 때, 우리는 먼저 해결책의 본질을 볼 수 있어야 그것을 능숙하게 실행할 수 있습니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.