帮忙求出一个算法来。

bing15 2015-10-20 10:47:02
比如:

微信红包的总额有100元,必须要发送给60个用户,每个用户领取的红包是随机的,但是金额不得大于2元。

怎么求出一个算法来发红包。
...全文
325 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Charles杨 2015-11-14
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
一个可能的算法
$total = 10000;
$copies = 60;
$min = 1;
$max = 200;

$r = Redbag($total, $copies, $min, $max);
printf("项数:%s 合计%d 最大:%d 最小:%d\n", count($r), array_sum($r), max($r), min($r));
print_r($r);

function Redbag($total, $copies, $min, $max) {
  $res = array_fill(0, $copies, $min);
  while(array_sum($res) < $total) {
    $k = rand(0, $copies - 1);
    if(++$res[$k] > $max) $res[$k]--;
  }
  return $res;
}
大神,你太厉害了,你咋啥都会了啊!佩服!!
toad_in_well 2015-11-12
  • 打赏
  • 举报
回复

$total=10;//红包总额
$num=8;// 分成8个红包,支持8人随机领取
$min=0.01;//每个人最少能收到0.01元

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;
    echo '第'.$i.'个红包:'.$money.' 元,余额:'.$total.' 元 <br/>';
}
echo '第'.$num.'个红包:'.$total.' 元,余额:0 元';
在知乎上看到的。。http://www.zhihu.com/question/22625187 这是设定了一个最小值。。
Kepon_cai 2015-11-04
  • 打赏
  • 举报
回复
//改了一下,可以调整分配的基数 <?php $total =100; $amount = 60; $baseCash = 0.1; $arr = assign_money($total,$amount,$baseCash); var_dump($arr); var_dump(array_sum($arr)); function assign_money($total,$amount,$baseCash){ $arr = array_fill(0,$amount,$baseCash); $total=floor($total - $amount*$baseCash); while($total>0){ $lucky =rand(0,$amount-1); if($arr[$lucky]<2){ $arr[$lucky]+=$baseCash; $total = round($total - $baseCash,1); } } return $arr; } ?>
xuzuning 2015-10-21
  • 打赏
  • 举报
回复
一个可能的算法
$total = 10000;
$copies = 60;
$min = 1;
$max = 200;

$r = Redbag($total, $copies, $min, $max);
printf("项数:%s 合计%d 最大:%d 最小:%d\n", count($r), array_sum($r), max($r), min($r));
print_r($r);

function Redbag($total, $copies, $min, $max) {
  $res = array_fill(0, $copies, $min);
  while(array_sum($res) < $total) {
    $k = rand(0, $copies - 1);
    if(++$res[$k] > $max) $res[$k]--;
  }
  return $res;
}

20,398

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧