PHPIN.NET

 找回密码
 立即注册
查看: 207|回复: 0

[技巧手记] PHP最优整数均分算法

[复制链接]

463

主题

494

帖子

5089

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5089
发表于 2020-7-15 23:17:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
  1. <?php
  2. /*
  3. * @最优整数均分算法
  4. * @param int $number 待平分的数字
  5. * @param int $taotl 平分总个数
  6. */
  7. function getDivideNumber($number, $total) {
  8.     $divide_number  = bcdiv($number, $total);    // 除法取平均数
  9.     $last_number = bcsub($number, $divide_number * $total);    // 获取剩余
  10.     $number_str = str_repeat($divide_number.'|', $total - $last_number);    // 拼装平分后的数据
  11.     $number_str2 = str_repeat(($divide_number + 1).'|', $last_number);    // 拼装剩下的分配
  12.     $number_str = $number_str2 . $number_str;    // 组合
  13.     return explode('|', trim($number_str, '|')); // 去掉前后多余的分隔符 返回数组
  14. }
  15. $arr = getDivideNumber(20, 8);
  16. print_r($arr);
复制代码
以上代码执行结果为:
  1. Array
  2. (
  3.     [0] => 3
  4.     [1] => 3
  5.     [2] => 3
  6.     [3] => 3
  7.     [4] => 2
  8.     [5] => 2
  9.     [6] => 2
  10.     [7] => 2
  11. )
复制代码
PHP实现最近似的分配法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|PHPIN.NET ( 冀ICP备12000898号-14 )|网站地图

GMT+8, 2021-5-18 15:04

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表