在微博上看到segmentfault上的一个题目,看了下问题,我自己想的就是先把每个人都分6元,然后在随机分配剩下的40元.看了下原题的答案,已经有这样的思路.哈哈.写下我的代码.
有两种做法:一种是从$leave里面随机 0 ~ ($max - $min)之间的数(可以是浮点数),然后随机用户的数组,抽取一个,判断两者相加是否大于$max,如果大于,跳过;小于的话就把相加的结果赋值给该用户.
另一种做法是先随机抽取一个用户,在根据用户对比$max的差值随机一个数,再相加给该用户.我用的是这种.
/**
* $n = 10; // 人数
* $money = 100; // 钱总和
* $min = 6; // 下限6
* $max = 12; // 上线 12;
*/
function sendHongbao($money=100, $n=10, $min=6, $max=12){
$arr = array_fill( 0, $n, $min); // 填充每个人的钱的数组
$leave = $money - $n * $