>  기사  >  백엔드 개발  >  PHP에서 임의의 빨간 봉투 기능 구현

PHP에서 임의의 빨간 봉투 기능 구현

小云云
小云云원래의
2018-01-26 13:45:261672검색

이 글은 주로 PHP에서 구현된 Random Red Envelope 알고리즘을 소개하며, PHP Random Red Envelope 알고리즘의 원리, 구현 방법 및 관련 주의사항을 예제 형식으로 분석하여 도움이 되길 바랍니다. 모든 사람.

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개의 빨간 봉투를 보내야 합니다

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

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개의 콩을 예약해야 합니다. 필요한 남은 콩 수를 제거한 후 남은 콩 수의 평균을 사용합니다. 이번에는 빈 수를 무작위로 생성하기 위한 최대값으로 beans

관련 권장 사항:

php가 고정 빨간색 봉투 및 무작위 빨간색 봉투 알고리즘을 구현하는 방법에 대한 자세한 설명(그림)

php는 무작위 빨간색 봉투 알고리즘을 생성합니다.

지정된 수의 무작위 빨간색 봉투를 생성합니다

위 내용은 PHP에서 임의의 빨간 봉투 기능 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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