PHP 는 지 정 된 범위 내의 N 개의 중복 되 지 않 는 무 작위 수 를 생 성 합 니 다.
2064 단어 php반복 되 지 않 는 난수
PHP 사이트 개발 에서 때때로 우 리 는 지 정 된 범위 내 에서 일정 수량의 중복 되 지 않 는 임 의 수 를 생 성 해 야 합 니 다.구체 적 으로 이 생산 임 의 수의 함 수 를 어떻게 설계 합 니까?우 리 는 무 작위 로 발생 하 는 수 를 배열 에 저장 할 수 있 지만,저장 하 는 동시에 중복 되 는 값 을 제거 하면 일정 수량의 중복 되 지 않 는 무 작위 수 를 생 성 할 수 있다.물론 지 정 된 범위 안의 수 치 를 배열 에 저장 한 다음 에
shuffle($array)
이 배열 을 어 지 럽 힌 다음 에 그 중의 일정한 수량의 값 을 캡 처 할 수도 있다.그러나 뒤의 방법 은 지 정 된 난수 범위 가 너무 클 때 비교적 큰 배열 이 생 긴 다.다음은 첫 번 째 방법의 코드 를 드 리 겠 습 니 다.두 번 째 방법 은 더욱 간단 합 니 다.여러분 이 시도 해 보 세 요.사실 차이 가 많 지 않 습 니 다.
<?php
/*
* array unique_rand( int $min, int $max, int $num )
* ,
*
* $min $max:
* $num:
*/
function unique_rand($min, $max, $num) {
$count = 0;
$return = array();
while ($count < $num) {
$return[] = mt_rand($min, $max);
$return = array_flip(array_flip($return));
$count = count($return);
}
// ,
shuffle($return);
return $return;
}
// 10 1 100
$arr = unique_rand(1, 100, 10);
echo implode($arr, ",");
?>
프로그램 실행 은 다음 과 같 습 니 다:48,5,19,36,63,72,82,77,46,16
몇 가지 설명 을 추가 합 니 다.
1.무 작위 수 를 생 성 할 때 우 리 는
mt_rand()
함 수 를 사용 했다.이 함수 생 성 난수 의 평균 속 도 는 rand()
보다 몇 배 빠르다.2.배열 의 중복 값 을 제거 할 때'반전 법'을 사 용 했 습 니 다.바로
array_flip()
으로 배열 의 key 와 value 를 두 번 교환 하 는 것 입 니 다.이 방법 은 배열 의 중복 치 를 제거 하 는 동시에 효율 도 사용array_unique()
보다 훨씬 빠르다.3.배열 로 돌아 가기 전에 먼저
shuffle()
를 사용 하여 배열 에 새로운 키 이름 을 부여 하고 키 이름 이 0-n 연속 숫자 임 을 보증 합 니 다.이 절 차 를 진행 하지 않 으 면 중복 값 을 삭제 할 때 키 이름 이 연속 되 지 않 을 수 있 습 니 다.for 로 옮 겨 다 닐 때 문제 가 있 지만 foreach 를 사용 하거나 옮 겨 다 닐 필요 가 없 을 때 shuffle 이 필요 하지 않 습 니 다.총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.