最低基準の標準偏差を分割する合計金額、整数カウントに平均スプリット

    パブリック関数tt_add(){ 
        $ RES = $ この - > arr_avg(20は14 ); 
        エコーarray_sum($ RES); 
        エコー' ---- ' COUNT($ RES);. 
        ダンプ($ RES); 
        出口; 
    } 


    / * ** 
     * @param額$「合計」
     * @paramの$回数のデータの数を分割する必要がある" 
     * @returnアレイ|二つに最小標準標準偏差、平均回数分割をばらばらにするミックス「の合計額整数' 
     * / 
    パブリック関数arr_avg($量$数)
    { 
        $ avg_num   = $ AMOUNT / $ COUNT; 
        $ ceil_num = CEIL($のAMOUNT /$カウント)。

        もし($ avg_num == $のceil_num){ 
            $ avg_res = array_fill(0、$回数、(int型)$ ceil_num)。
        } {
             場合($量< $カウント){ 
                $ avg_res_1 = array_fill(0、$量(INT)$ ceil_num)。      // 这里只会填充1 
                $ avg_res_2 = array_fill($量- 1、$カウント- $量、0 ); 
                $ avg_res    = dealed_array_merge($ avg_res_1、$ avg_res_2)。
            } { 
                $ floor_num =フロア($量/ $数); 
                $ avg_res    = array_fill(0、$回数、(int型)$ floor_num)。

                $ left_num = $量- array_sum($ avg_res)。
                もし1 <= $ {left_num)
                    $ left_avg_res = $ この - > ; arr_avg($ left_num、$数)

                    foreachの($ left_avg_res として $ K => $ V){
                         場合($のVの== 0 ){  
                            解除($ left_avg_res [$ K])。
                        } 
                    } 
                    解除($のV); 

                    $ left_avg_res = array_values($ left_avg_res); 
                    $ avg_res = $ この - > array_add(avg_res $、$ left_avg_res); 
                } 

            } 
        } 

        戻り$ avg_resを; 
    } 

    / * ** 
     * @param $ A 
     * B $の@param 
     「一緒に2一次元アレイ、同じキーを追加して、異なる平均滞留」* @returnミックス
     * / 
    パブリック関数($、$ B)をarray_add 
    { 
        // キーの取得二つの配列交差点 
        の$ ARR = array_intersect_key($、$のB); 

        //キー名は、最初の配列に、第一の配列と配列要素を存在しない場合、二番目の配列を横切ります
        foreachの($ B AS $キー=> $値){
             IF(!{array_key_exists(キー$、A $))
                $ A [キー$] = $値; 
            } 
        } 

        //はキーと同じ配列要素を計算し、同じキー名は、の値に対応する配列内の元の要素置き換え
        foreachの($ ARR aSに $キー=> $値){ 
            $ [$キー] = $ A [$キー] + ; $ B [$キー] 
        } 

        // 戻りますまた、アレイの後に
        リターンの$ A; 
    } 

例:AMOUNT:20 COUNTである:14

20である8 ----。

<PRE>アレイ(8){
[0] =&GT。INT(3)
[1] =&GT。INT(3)
[2] =&GT。INT(3)
[3] =&GT。INT(3)
[4] =&GT。INT(2)
[5] =&GT。INT(2)
[6] =&GT。INT(2)
[7] =&GT。INT(2)
}
</ PRE>

 

例:金額:20は、カウント:20

20 ---- 20

<PRE>アレイ(20){
[0] =&GT。INT(1)
[1] =&GT。INT(1)
[2] =&GT。INT(1)
[3] =&GT。INT(1)
[4] =&GT。INT(1)
[5] =&GT。INT(1)
[6] =&GT。INT(1)
[7] =&GT。INT(1)
[8] =&GT。INT(1)
[9] =&GT。INT(1)
[10] =&GT。INT(1)
[11] =&GT。INT(1)
[12] =&GT。INT(1)
[13] =&GT。INT(1)
[14] =&GT。INT(1)
[15] =&GT。INT(1)
[16] =&GT。INT(1)
[17] =&GT。INT(1)
[18] =&GT。INT(1)
[19] =&GT。INT(1)
}
</ PRE>

 

 

例:金額:20は、カウント:22

20 ---- 22

<PRE>アレイ(22){
[0] =&GT。INT(1)
[1] =&GT。INT(1)
[2] =&GT。INT(1)
[3] =&GT。INT(1)
[4] =&GT。INT(1)
[5] =&GT。INT(1)
[6] =&GT。INT(1)
[7] =&GT。INT(1)
[8] =&GT。INT(1)
[9] =&GT。INT(1)
[10] =&GT。INT(1)
[11] =&GT。INT(1)
[12] =&GT。INT(1)
[13] =&GT。INT(1)
[14] =&GT。INT(1)
[15] =&GT。INT(1)
[16] =&GT。INT(1)
[17] =&GT。INT(1)
[18] =&GT。INT(1)
[19] =&GT。INT(1)
[20] =&GT。INT(0)
[21] =&GT。INT(0)
}
</ PRE>

 

 

 

 

 

 







 

おすすめ

転載: www.cnblogs.com/pansidong/p/11649547.html