国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

給定總數(shù),給定供給組數(shù),獲取最理性的平均值

whlong / 2857人閱讀

摘要:我要獲得盡可能理想的數(shù)據(jù),那么應該分別返回條。我總共需要條數(shù)據(jù),數(shù)據(jù)庫中滿足條件的有類數(shù)據(jù),他們總數(shù)分別是條。上面的代碼就實現(xiàn)了這一目的。

話不多說,上代碼,不懂原理與目的可以對照注釋
/**
 * 根據(jù)給定的總數(shù)值返回每個單元的最值平均數(shù)
 *
 * @param integer $num 總共需要被平均的值
 * @param array   $data 提供的數(shù)據(jù)
 *
 * @example $num  = 12
 *           $data = [
 *                  "a" => 5,
 *                  "b" => 6,
 *                  "c" => 2,
 *                 ]
 *
 * @return [
 *          "a" => 5,
 *          "b" => 5,
 *          "c" => 2,
 *          ]
 */
if (! function_exists("get_avg_data")) {
    function get_avg_data($num, array $data)
    {
        $sum = array_sum($data);
        // 如果數(shù)組內(nèi)小于需要數(shù)值
        if ($num >= $sum){
            $reData = $data;
        } else {
            asort($data);
            $reData = handle_avg_data($num, $data);
        }

        return $reData;
    }
}

// 處理數(shù)據(jù)
if (!function_exists("handle_avg_data")){
    function handle_avg_data(&$num, array &$data)
    {
        $n = count($data);
        $avg = (int)($num / $n);
        $y = $num % $n;
        $reData = [];
        $preData = $data;
        foreach ($data as $key => $value) {
            if ($value <= $avg){
                $reData[$key] = $value;
                unset($data[$key]);
                $num = $num - $value;
            }
        }
        if (count($preData) == count($data)){
            if ($y == 0){
                foreach ($data as $k => $v){
                    $reData[$k] = $avg;
                    unset($data[$k]);
                }
            } else {
                foreach ($data as $k => $v){
                    $reData[$k] = $avg + 1;
                    $num = $num -  $avg - 1;
                    unset($data[$k]);
                    break;
                }
            }
        }
        $reD = [];
        if (count($data) > 0){
            $reD = handle_avg_data($num, $data);
        }

        return array_merge($reData, $reD);
    }
}
好吧,再舉一個例子

eg①:我總共需要30條數(shù)據(jù),數(shù)據(jù)庫中滿足條件的有4類數(shù)據(jù),他們總數(shù)分別是4,5,15,19條。
我要獲得盡可能理想的數(shù)據(jù),那么應該分別返回 4,5,11,10條。
eg②:我總共需要30條數(shù)據(jù),數(shù)據(jù)庫中滿足條件的有4類數(shù)據(jù),他們總數(shù)分別是12,6,15,19條。
我要獲得盡可能理想的數(shù)據(jù),那么應該分別返回 8,6,8,8條。
……

上面的代碼就實現(xiàn)了這一目的。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28307.html

相關文章

  • 【整理】Laravel 中Eloquent ORM 相關操作

    摘要:軟刪除當模型被軟刪除后,它們并沒有真的從數(shù)據(jù)庫刪除,而是在模型上設置一個屬性并插入數(shù)據(jù)庫,如果模型有一個非空值,那么該模型已經(jīng)被軟刪除了。 Laravel 中Eloquent ORM 相關操作 定義 操作 獲取(查詢) 獲取集合,(查詢列表) 返回值是 IlluminateDatabaseEloquentCollection 的一個實例 獲取所有的數(shù)據(jù) use AppUser; $us...

    dongfangyiyu 評論0 收藏0
  • 你可能需要了解下Laravel集合

    摘要:前言集合通過進行實例,的內(nèi)核大部分的參數(shù)傳遞都用到了集合,但這并不代表集合就是好的。當你需要處理一組數(shù)組時,你可能就需要它幫助你快捷的解決實際問題。例如我們需要通過一個水平線切分數(shù)組,將其分為個及以上的數(shù)組個數(shù)。謝謝,還不抓緊去練習下集合 showImg(https://segmentfault.com/img/bVbhjvY?w=600&h=296); 前言 集合通過 Illumin...

    fuyi501 評論0 收藏0
  • 使用 Prometheus 監(jiān)控 Docker 容器

    摘要:傳統(tǒng)方法比如說你想監(jiān)控你容器的內(nèi)存使用率。不支持維度數(shù)據(jù),這樣一個名為的容器的指標,可能被稱為。這是非常偉大并且有用的,但是有限制性。這個輸出器使用容器的名字,和鏡像作為維度。 本文的原作者是 johannes-fish-ziemke,原文地址是 http://5pi.de/2015/01/26/monitor-docker-containers-with-prometheus/...

    big_cat 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<