>백엔드 개발 >PHP 튜토리얼 >PHP_php 팁에서 반복되지 않는 난수와 배열을 생성하는 4가지 방법 공유

PHP_php 팁에서 반복되지 않는 난수와 배열을 생성하는 4가지 방법 공유

WBOY
WBOY원래의
2016-05-16 20:19:051221검색

반복되지 않는 난수를 생성하는 몇 가지 방법을 아래에 작성하고 코드로 이동하세요.

코드 복사 코드는 다음과 같습니다.

정의('RANDOM_MAX', 100);
정의('COUNT', 10);

echo '최대 무작위 수: '.RANDOM_MAX, ' ;결과 개수:'.COUNT, '
';

invoke_entry('rand1');
Invoke_entry('rand2');
Invoke_entry('rand3');
Invoke_entry('rand4');

함수 Invoke_entry($func_name) {
$time = 새로운 시간();
$time->time_start();
call_user_func($func_name);
echo $func_name.' 시간 소비: ', $time->time_spend();
echo '
';
}
함수 rand1() {
$숫자 = 범위(1, RANDOM_MAX);
shuffle($numbers); //배열을 무작위로 섞습니다
$result = array_slice($numbers, 1, COUNT);
$결과 반환;
}
함수 rand2() {
$결과 = 배열()
while(count($result)< COUNT) {
$result[] = mt_rand(1, RANDOM_MAX); //mt_rand()는 rand()보다 더 좋고 빠른 임의 함수입니다
$result = array_unique($result); //배열에서 중복된 요소를 삭제합니다
}
$결과 반환;
}
함수 rand3() {
$결과 = 배열()
while(count($result) < COUNT) {
$_tmp = mt_rand(1, RANDOM_MAX);
if(!in_array($_tmp, $result)) { //삽입
은 동일한 요소가 배열에 존재하지 않는 경우에만 허용됩니다. $result[] = $_tmp;
}

$결과 반환;
}
함수 rand4() {
$결과 = 배열();
while (count($result) < COUNT) {
$result[] = mt_rand(1, RANDOM_MAX);
$result = array_flip(array_flip($result)); //array_flip은 배열의 키와 값을 교환합니다
}
$결과 반환;
}
수업 시간 {
비공개 $_start;

공개 함수 time_start() {
$this->_start = $this->microtime_float();
}
공개 함수 time_spend() {
$this->microtime_float() 반환 - $this->_start;
}
개인 함수 microtime_float() {
list($usec, $sec) = 폭발(" ", 마이크로타임());
return ((float)$usec (float)$sec);
}
}


?>

네 번째 방법인 뒤집기(flip) 방법에 대해 이야기해 보겠습니다. array_flip()을 사용하여 배열의 키와 값을 뒤집을 때, PHP 배열 기능을 사용하면 이때 반복되는 키를 덮어쓰게 됩니다. , 다시 뒤집는 것은 중복된 값을 제거하는 것과 같습니다.
위의 방법은 단순한 예일 뿐이며 일부 방법은 적용 범위가 제한되어 있습니다.

여러 가지 방법의 효율성을 살펴보면

배열이 클 경우 array_unique()를 사용하면 성능이 저하됩니다. 물론 shuffle()도 이로 인해 영향을 받습니다.

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