php微信多人红包(随机以及平均分配)

先说要点:
1、随机分配的 随机范围一定要算好。
2、由于精确到0.01;所以rand取随机数的时候要*100.
3、最后那个人直接把余额包起来就可以了。


/*
	 * $money红包金额
	 * $num人数
	 * $type为0是平均分配,不为0则为随机分配
	 * $flag标识符
	 */
	function check($money, $num, $type) {
		$min = 0.01;
		$max = 200;
		$rand_money = 0;
		$flag = true;
		if ($money > $max) {
			echo "金额不能大于200";
			$flag = false;
		}
		if ($money < $min * $num) {
			echo "每个红包不能低于0.01";
			$flag = false;
		}
		if ($flag) {
			Red_Packet ( $money, $num, $type );
		}
	}
	function Red_Packet($money, $num, $type) {
		$min = 0.01;
		if ($type) {
			for($i = 1; $i < $num; $i ++) {
				$rand_money = ($money - $min * ($num - $i)) / ($num - $i); // 随机范围
				
				$red_packet = rand ( $min * 100, $rand_money * 100 ) / 100;
				$money = $money - $red_packet;
				// var_dump($red_packet);
				echo '第' . $i . '个红包:' . $red_packet . ' 元<br>';
			}
			echo '第' . $num . '个红包:' . $money . ' 元<Br>'; // 最后那个直接独自一个红包
		} else {
			$money = $money / $num;
			echo '每个红包为' . $money . ' 元<br>';
		}
	}
	check ( 10, 10, 1 );
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章