您的位置:首页 > 其它

有一定金额(m)的钱,要求生成 n 个红包,每个红包中的钱数是 1--100的随机数

2014-04-04 17:19 204 查看
<?php
//mt_rand是内部自动更新rand种子,因此保证产生优质均匀的随机数,
//因此可以看到结果也是均匀的在 (1+100)/2=50.5上下浮动
error_reporting(E_ALL);
$arr=array();
//总钱数
$m=1000;
//红包数
$n=20;
//最小钱
$beg=1;
//最大钱
$end=100;
for($i=0;$i<$n;$i++){
//初始化所有红包,避免有的红包一分钱也没有,默认值为1
$arr[$i]=$beg;
}
while(array_sum($arr)<$m){
$pos=mt_rand(0, $n-1);
if($arr[$pos]<$end)
$arr[$pos]++;
}
echo "<pre>";
print_r($arr);
echo "</pre>";
echo "sum:".array_sum($arr);

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: