>  기사  >  백엔드 개발  >  PHP에서 반복되지 않는 난수와 배열을 생성하는 4가지 방법 공유

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

coldplay.xixi
coldplay.xixi앞으로
2020-07-24 17:21:222898검색

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

반복되지 않는 난수를 생성하는 여러 가지 방법을 적어보겠습니다. 바로 코드로 들어가겠습니다

코드는 다음과 같습니다.

<?phpdefine(&#39;RANDOM_MAX&#39;, 100);define(&#39;COUNT&#39;, 10);
echo &#39;max random num: &#39;.RANDOM_MAX, &#39; ;result count:&#39;.COUNT, &#39;<br/>&#39;;
invoke_entry(&#39;rand1&#39;);invoke_entry(&#39;rand2&#39;);invoke_entry(&#39;rand3&#39;);invoke_entry(&#39;rand4&#39;);
function invoke_entry($func_name) { $time = new time(); $time->time_start(); call_user_func($func_name); echo $func_name.&#39; time spend: &#39;, $time->time_spend(); echo &#39;<br/>&#39;;}function rand1() { $numbers = range (1, RANDOM_MAX); shuffle($numbers); //随机打乱数组 $result = array_slice($numbers, 1, COUNT); return $result;}function rand2() { $result = array();  while(count($result)< COUNT) {  $result[] = mt_rand(1, RANDOM_MAX); //mt_rand()是比rand()更好更快的随机函数  $result = array_unique($result); //删除数组中重复的元素 } return $result;}function rand3() { $result = array();    while(count($result) < COUNT) {  $_tmp = mt_rand(1, RANDOM_MAX);  if(!in_array($_tmp, $result)) { //当数组中不存在相同的元素时,才允许插入   $result[] = $_tmp;  } }    return $result;}function rand4() { $result = array(); while (count($result) < COUNT) {  $result[] = mt_rand(1, RANDOM_MAX);  $result = array_flip(array_flip($result)); //array_flip将数组的key和value交换 } return $result;}class time { private $_start;  public function time_start() {  $this->_start = $this->microtime_float(); } public function time_spend() {  return $this->microtime_float() - $this->_start; } private function microtime_float() {  list($usec, $sec) = explode(" ", microtime());  return ((float)$usec + (float)$sec); }}
?>

네 번째 방법인 뒤집기 방법에 대해 array_flip() code> 배열의 키와 값을 뒤집습니다. PHP 배열 기능을 사용하면 중복된 키를 덮어쓰게 됩니다. 이때 다시 뒤집는 것은 중복된 값을 제거하는 것과 같습니다. <br>위 방법은 단순한 예일 뿐이며 일부 방법은 적용 범위가 제한되어 있습니다. <code>array_flip()将数组的键和值翻转,利用php数组特性,重复的键会覆盖,此时再翻转一次,就相同于去掉了重复的值。
以上几种方法只是简单的例子,有的方法适用范围有限。

在看看几种方法的效率:

array_unique()在数组较大时性能比较差,当然shuffle()

여러 가지 방법의 효율성 살펴보기:

array_unique() 코드 사용 >배열이 크면 성능이 저하됩니다. 물론 <code>shuffle()도 이로 인해 영향을 받습니다. 🎜🎜🎜관련 학습 권장 사항: 🎜초보부터 마스터까지 PHP 프로그래밍🎜🎜🎜

위 내용은 PHP에서 반복되지 않는 난수와 배열을 생성하는 4가지 방법 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제