Maison  >  Article  >  php教程  >  生成指定个数的随机红包

生成指定个数的随机红包

PHP中文网
PHP中文网original
2016-05-26 08:18:331223parcourir

指定红包金额,最小红包金额和红包个数就可以自动生成

[PHP]代码   

<?php
$total=20;//红包总金额   
$num=10;// 分成10个红包,支持10人随机领取   
$min=0.01;//每个人最少能收到0.01元   
 $redpack = new redpack($total,$num,$min);
 $jieguo = $redpack->getPack();
 foreach($jieguo as $key=>$val){
	 $n = $key+1;
	 echo &#39;第&#39;.$n.&#39;个红包:&#39;.$val[&#39;money&#39;].&#39; 元,余额:&#39;.$val[&#39;balance&#39;].&#39; 元<br>&#39;;   
 }

class redpack{
	//总金额
	private $total=0;
	//红包数量
	private $num=0;
	//最小红包金额
	private $min=0.01;
	
	public function __construct($total,$num,$min)
	{
		$this->total = $total;
		$this->num = $num;
		$this->min = $min;
	}
	//红包结果
	public function getPack()
	{
		$total = $this->total;
		$num = $this->num;
		$min = $this->min;
		for ($i=1;$i<$num;$i++)   
		{   
			$safe_total=($total-($num-$i)*$min)/($num-$i);//随机安全上限   
			$money=mt_rand($min*100,$safe_total*100)/100;   
			$total=$total-$money;  
			//红包数据
			$readPack[]= [
				&#39;money&#39;=>$money,
				&#39;balance&#39;=>$total,
			];
		}
		//最后一个红包,不用随机		
		$readPack[] = [
			&#39;money&#39;=>$money,
			&#39;balance&#39;=>0,
		];
		//返回结果
		return $readPack;
	}
	
}

                   

                   

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:php中memcache 基本操作实例Article suivant:CURL缓存远程文件类