>  기사  >  백엔드 개발  >  PHP 무작위 빨간 봉투 알고리즘에 대한 자세한 설명

PHP 무작위 빨간 봉투 알고리즘에 대한 자세한 설명

墨辰丷
墨辰丷원래의
2018-05-18 14:49:041668검색

이 글은 주로 PHP에서 구현된 랜덤 레드 엔벨로프 알고리즘을 소개하고, PHP 랜덤 레드 엔벨로프 알고리즘의 원리, 구현 방법 및 관련 주의사항을 예제 형식으로 분석합니다. 도움이 필요한 친구는 참고할 수 있습니다

자세한 내용은 다음과 같습니다.

1. 전반적인 디자인

많은 알고리즘이 있으며, 주요 "아키텍처"는 다음과 같습니다. redis decr() 명령을 사용하여 전류를 제한하고 mysql을 사용합니다. 다양한 필수 데이터를 기록하기 위해

2. 빨간 봉투 알고리즘

간단히 설명하기 위해 빨간 봉투의 양은 정수로 표현됩니다. 각 빨간 봉투에는 남은 빨간 봉투의 개수*2가 포함되어 있다고 가정합니다. , 처음에 한 사람에게 하나의 빈을 미리 할당해야 합니다

function randBean($total_bean, $total_packet)
{
  $min_bean = 1;
  $max_bean = 5000;
  $range = 2;
  $total_bean = $total_bean - $total_packet * $min_bean; //每个人预留一个最小值
  $list = [];
  $min = 1;
  while(count($list) < $total_packet){
    $max = floor($total_bean / $total_packet) * $range;
    $bean = rand($min, $max);
    if ($bean <= $max_bean - 1) {
      $list[] = $bean;
      $total_bean -= $bean;
    }
  }
  $list[] = $total_bean;//剩余的金豆作为最后一个红包
  //合并
  foreach ($list as $k => $v) {
    $list[$k] += $min_bean;
  }
  return $list;
}


여러 번 계산


두 번째, 간단히 확장하면 각 빨간 봉투의 최대 금액은 다음과 같습니다. (남은 수량/남은 빨간 봉투 수)*3 단, 매번 최소 2개의 빨간 봉투를 보내야 합니다

세 번째 방법인 선분 방식은 여러 개의 숫자를 무작위로 생성하고 직선을 여러 세그먼트로 나눕니다. , 각각 세그먼트의 길이(이것은 크게 변동하며 그다지 평균이 아닙니다. 각 빨간 봉투의 크기가 제한되면 더 번거로울 것입니다)

function abc ($total_bean, $total_packet)
{
  $min = 1;
  $max = $total_bean -1;
  $list = [];
  $maxLength = $total_packet - 1;
  while(count($list) < $maxLength) {
    $rand = mt_rand($min, $max);
    empty($list[$rand]) && ($list[$rand] = $rand);
  }
  $list[0] = 0; //第一个
  $list[$total_bean] = $total_bean; //最后一个
  sort($list); //不再保留索引
  $beans = [];
  for ($j=1; $j<=$total_packet; $j++) {
    $beans[] = $list[$j] - $list[$j-1];
  }
  // return $beans;
  echo &#39;<pre class="brush:php;toolbar:false">&#39;; print_r($beans); echo array_sum($beans);
}
abc(100000, 3);


네 번째
:

왜냐하면 각 사람은 최소 1개의 콩을 가지고 있으며, 콩이 무작위로 생성될 때마다 남은 콩 수 * 1개의 콩을 예약해야 합니다. 필요한 남은 콩 수를 제거한 후 남은 콩 수의 평균을 사용합니다. 이번에는 콩의 개수를 무작위로 생성하기 위한 최대값으로 콩을

관련 추천:

php 구현

무작위 빨간 봉투

알고리즘

php 고정 빨간 봉투와
무작위 빨간 봉투

구현 방법 알고리즘 상세 설명(그림)

php는
임의의 빨간색 봉투 생성

알고리즘


위 내용은 PHP 무작위 빨간 봉투 알고리즘에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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