zoukankan      html  css  js  c++  java
  • 红包算法的PHP实现

        前段时间有个项目需要用到红包算法,本以为简单,细想之下有点复杂。于是就百度了一下,没想到查出了不少,有些写的很复杂。由于时间有点紧,我就找了一个简单点的。然后参考着写一个。参考的地址是:https://blog.csdn.net/gorgle/article/details/52954413;

           这个地址中的红包是用java写的。根据其原理,我用PHP写了一遍,并且改进了点。他的算法中没有加每个红包最大最小值限制。我用PHP写的时候加上去了。代码如下:

    <?php
    
    /*
    $total_money:红包总金额
    $total_people:总人数/总分数
    $min_money:每份红包的最小金额
    $max_money:每份红包的最大金额
    */
    function redpack($total_money,$total_people,$min_money,$max_money){
    
       $ret=array();
       $new_ret=array();
       
       $total_real_money=$total_money-$total_people*$min_money;
    
       $ret[0]=0;
       for($i=1;$i<$total_people;$i++){
    	   
         $ret[$i]=get_rand($ret[$i-1],$total_real_money,($max_money-$min_money));
    	 
    	  
       }
    
     sort($ret);
    
    for($j=0;$j<count($ret);$j++){
    
    if($j==count($ret)-1){
    $new_ret[count($ret)-1]=$total_real_money-$ret[count($ret)-1]+$min_money;
    }else{
    
    	
    $new_ret[]=$ret[$j+1]-$ret[$j]+$min_money;
    }
    }
    
    
    shuffle($new_ret);
      return $new_ret;
    
    }
    
    
    function get_rand($start,$end,$max){
    	$tmp=rand($start,$end);
    	$total_max=$start+$max;
    	
    	if($tmp>($total_max) || empty($tmp)){
    		return get_rand($start,$end,$max);
    	}else{
    		return $tmp;
    	}
    	
    }
    
  • 相关阅读:
    html5内容嵌入元素
    thinkphp默认路径访问报错
    LNMP安装教程
    wampserver的mysql启动与环境变量设置
    http响应详解_韩顺平PHP视频听课笔记
    http请求详解,防盗链技术_韩顺平PHP视频听课笔记
    使用js写一个作用于xml文件的ajax
    使用js创建一个简单的ajax
    js写一个ajax错误规避
    使用js写一个原生态简单的ajax
  • 原文地址:https://www.cnblogs.com/lifengliu/p/9451725.html
Copyright © 2011-2022 走看看