>  기사  >  백엔드 개발  >  PHP로 구현된 무작위 빨간 봉투 알고리즘

PHP로 구현된 무작위 빨간 봉투 알고리즘

*文
*文원래의
2017-12-27 14:45:563813검색

이 글에서는 주로 PHP로 구현된 WeChat 빨간 봉투 알고리즘을 소개하고, 관련된 행운의 빨간 봉투에 대한 무작위 알고리즘 기법을 예시 형식으로 분석합니다. 그것이 모두에게 도움이 되기를 바랍니다.

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

최근 위챗 그룹에서 빨간 봉투 기능을 경험했습니다. 빨간 봉투에는 두 가지 유형이 있습니다.

1. 행운의 빨간 봉투

가 있습니다. 일반 빨간 봉투를 분석할 필요가 없습니다. 큰 냄비 밥의 원리는 균등하게 나뉩니다.

행운의 빨간 봉투는 행운(행운)을 의미합니다. 어떤 사람은 많이 잡을 수 있고, 어떤 사람은 불쌍하게도 잡을 수 있습니다. 물론 먼저 잡으면 더 많이 얻을 수 있다는 의미는 아닙니다. 최종 분석 결과는 무작위입니다.

비슷한 기능을 구현할 수 있을지 고민해보고 직접 작성해봤습니다(감히 알고리즘이라고는 말할 수 없습니다).

// $bonus_total 红包总金额
// $bonus_count 红包个数
// $bonus_type 红包类型 1=拼手气红包 0=普通红包
function randBonus($bonus_total=0, $bonus_count=3, $bonus_type=1){
  $bonus_items  = array(); // 将要瓜分的结果
  $bonus_balance = $bonus_total; // 每次分完之后的余额
  $bonus_avg   = number_format($bonus_total/$bonus_count, 2); // 平均每个红包多少钱
  $i       = 0;
  while($i<$bonus_count){
    if($i<$bonus_count-1){
      $rand      = $bonus_type?(rand(1, $bonus_balance*100-1)/100):$bonus_avg; // 根据红包类型计算当前红包的金额
      $bonus_items[] = $rand;
      $bonus_balance -= $rand;
    }else{
      $bonus_items[] = $bonus_balance; // 最后一个红包直接承包最后所有的金额,保证发出的总金额正确
    }
    $i++;
  }
  return $bonus_items;
}


좋아, 지금 시도해 보자

// 发3个拼手气红包,总金额是100元
$bonus_items  = randBonus(100, 3, 1);
// 查看生成的红包
var_dump($bonus_items);
// 校验总金额是不是正确,看看微信有没有坑我们的钱
var_dump(array_sum($bonus_items));


배열을 사용하여 구현된 또 다른 버전, 원리는 비슷합니다.

function sendRandBonus($total=0, $count=3, $type=1){
  if($type==1){
    $input     = range(0.01, $total, 0.01);
    if($count>1){
      $rand_keys = (array) array_rand($input, $count-1);
      $last    = 0;
      foreach($rand_keys as $i=>$key){
        $current  = $input[$key]-$last;
        $items[]  = $current;
        $last    = $input[$key];
      }
    }
    $items[]    = $total-array_sum($items);
  }else{
    $avg      = number_format($total/$count, 2);
    $i       = 0;
    while($i<$count){
      $items[]  = $i<$count-1?$avg:($total-array_sum($items));
      $i++;
    }
  }
  return $items;
}

관련 추천:

PHP 난수에 대한 심층적인 이해를 바탕으로

PHP는 Diffie–Hellman 키 교환(Diffie–Hellman) 알고리즘을 구현합니다

PHP 생성 미로 및 자동 경로 찾기 알고리즘에 대한 자세한 설명

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

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