PHP는 무작위로 바쁜 효과를 반환합니다.

*文
풀어 주다: 2023-03-18 16:46:01
원래의
1323명이 탐색했습니다.

이 글에서는 주로 PHP 기반의 상품 기간 한정 판매로 바쁜 척하는 효과를 소개합니다. 그것이 모두에게 도움이 되기를 바랍니다.

최근 저는 판매중인 제품을 진열하는 기능에 관한 프로젝트를 진행하고 있습니다. 예를 들어, 우리 웹사이트에 트래픽이 많다면, 수천 명의 사용자가 몇 초 내에 동시에 귀하의 제품을 클릭한다면 실제로 "구매하려고 서두르는 사람이 너무 많아 시스템이 바쁘다"는 것처럼 보일 것입니다. "

하지만 대부분의 웹사이트는 그렇지 않습니다. 그다지 대단하지 않습니다. 사용자가 제품에 대한 수요가 많다고 느끼게 하려면 항상 "시스템이 사용 중입니다"라는 메시지를 표시하여 "바쁜 척"하는 프로그램을 만들어야 합니다( 타오바오를 제외한 다른 사이트는 너무 바쁘다고 생각하지 마세요. 일부러 잡지 않고는 살 수 없다는 느낌을 주니 이해해 주세요)

이 글은 규칙을 정하고 확장할 수 있습니다. 내 아이디어에 따라

1. 누구나 제품 구매 링크를 사용할 수 있습니다.

2. 사용자에게 "대기 중, 상품이 바쁨" 가능성을 70% 제공하고 싶습니다.

이 기사는 PHP 코드로 구현됩니다. , 다른 언어와 마찬가지로 ​​

먼저 초등학교 때 배운 지식을 사용합니다. 생각해 보세요:

1. 공 10개, 빨간 공 3개, 농구공 7개를 무작위로 섞어서 손을 넣습니다. , 농구공을 만질 확률은 얼마인가요? ? 예전에 친구에게 이 요구 사항을 보여줬더니

     $arr=array(“red”,”red”,”red”,”blue”,”blue”,”blue”,”blue”,”blue”,”blue”,”blue”);
     echo $arr[rand(0,9)];
로그인 후 복사

라고 하더군요. 두 문장

이 접근 방식은 실제로 매우 똑똑합니다. 그러나 이 작은 친구는 매우 중요한 점을 무시했습니다

2. 두 번째 사람이 만지면 어떻게 될까요? 그러면 10개의 공을 채워야 합니다(아직 빨간 공 3개와 농구공 7개가 있습니다)

그리고 가장 중요한 것은 계속해서 "무작위로" 섞는 것입니다. 이렇게 하면 두 번째 사람이 농구공에 닿을 확률이 높아집니다.

위 프로그램은 분명히 무시합니다. 계속해서 "무작위로" 혼합합니다. 처음 3개의 빨간색과 마지막 7개의 파란색에 따라 공을 터치하면 PHP의 rand 함수는 다음을 보장할 수 없습니다. 농구는 70%입니다. 많은 마스터들이 베이지안, 행렬 및 기타 단어와 같은 다양한 고급 알고리즘을 고안할 것입니다. 이러한 전자 상거래 기능에 그렇게 복잡한 계산이 필요한 경우 귀하의 상사는 귀하의 지출에 동의하지 않을 것입니다. . 이 기능을 완료하는 데 시간이 너무 많이 걸립니다.

다음으로 간단하면서도 정확한 알고리즘을 공개하겠습니다. 우리의 목표는 농구공에 닿을 확률을 최대한 가깝게 만드는 것입니다.

1단계:

$arr=array("red","red","red","blue","blue","blue","blue","blue"," blue","blue "); 이것이 있어야 합니다. 이것은 초기화된 빨간 공 3개와 농구공 7개입니다

두 번째 단계: 무작위 및 무작위 혼합.

위 배열에는 10개의 요소가 있으며, 무작위 공 2개를 교환할 수 있습니다. 그리고 몇 번 교환할지 정할 수 있습니다

먼저 스왑 함수를 작성하세요(이 함수를 이해하지 못하면 기본을 배워야 합니다)



function swap($i,$j,$arr)
  {
    $tmp=$arr[$i];
    $arr[$i]=$arr[$j];
    $arr[$j]=$tmp;
    return $arr;
  }
로그인 후 복사


이 함수는 두 개의 난수를 입력하고 배열의 시퀀스 번호를 교환하여 구현됩니다.


3단계: 교환 알고리즘을 최적화합니다.

위의 교환 함수와 입력된 임의 매개변수로 인해 빨간 공이 빨간 공으로 바뀌거나, 농구공이 농구공으로 바뀌게 됩니다. 그러나 "실제" 혼합은 달성되지 않습니다 따라서 모든 교환이 빨간 공과 농구공의 무작위 교환이 되도록 보장하는 보충 함수를 작성해야 합니다

 function getRange($arr,$v)
  {
    $ret=array();
    for($i=0;$i<count($arr);$i++)
    {
      if($arr[$i]==$v)
      {
         $ret[]=$i;
      }
    }
     return $ret[rand(0,count($ret)-1)];
  }
로그인 후 복사


이 함수의 기능은 다음과 같습니다. 10개의 공 중에서 빨간 공이나 농구공을 찾은 후 현재 일련번호를 꺼내고 Rand 함수를 사용하여 농구공이나 빨간 공의 일련번호를 무작위로 선택합니다.


여기를 살펴보세요:

    $i=getRange($arr,”red”);  //这样可以取出随机一个红球的序号
   $j=getRange($arr,”blue”); //这样可以取出随机一个篮球的序号
로그인 후 복사

4단계: 더 중요합니다.

무작위로 믹싱을 시작하세요

 for($num=0;$num<10;$num++)
     {
       
       $i=getRange($arr,”red”);  
             $j=getRange($arr,”blue”); 
       
       $arr=swap($i,$j,$arr);
      
      // echo implode(“,”, $arr).”|”.$i.”|”.$j.”<br/>”; //这个语句可以看一下输出,混合过后的排列,是否每次都不一样
     }
로그인 후 복사


여기서 주목해야 할 점은 $num<10입니다. 나를 대신해 10번 믹싱해주세요. 이는 큰 손을 사용하여 가방을 10번 휘젓는 것과 같습니다. 이론적으로는 더 많이 저을수록 무작위성이 더 강해집니다. 여기서는 실제로 10번이면 충분합니다.


네 번째 단계가 완료된 후 나오는 $arr는 빨간 공과 농구공의 혼합입니다.

5단계: rand 함수 다시 호출

 echo $arr[rand(0,9)];
로그인 후 복사

내용이 파란색이면 바로 종료합니다("바빠요, 귀찮게 하지 마세요") 빨간색이면 프로그램이 계속 실행되도록 합니다. 구매 과정.


관련 추천:

php는 이벤트 후보 복권 기능 코드를 구현합니다

php는 간단한 권한 관리를 구현합니다

php 복권 애플릿

위 내용은 PHP는 무작위로 바쁜 효과를 반환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿