在X部分中等分整数

时间:2012-04-28 18:22:39

标签: php math

我正在寻找一种在PHP中有效分配数字的方法。数字将始终为整数(无浮点)。

假设我有一个数组$ hours,其值从“1”到“24”($ hours ['1']等)和一个包含整数的变量$ int。我想要实现的是将$ int的值平均分配到24个部分中,这样我就可以为每个相应的数组条目赋值。 (如果数字是奇数,则剩余部分将被添加到24中的最后一个或第一个值。)

此致

3 个答案:

答案 0 :(得分:17)

这是您正在寻找的算法;它会在N个单元格上均匀分布整数K

for i = 0 to K
    array[i] = N / K    # integer division

# divide up the remainder
for i = 0 to N mod K
    array[i] += 1

答案 1 :(得分:3)

试试此代码

<?php
$num = 400;
$val = floor($num/24);

for($i=0;$i<24;$i++) {
    $arr[$i] = $val;
}

$arr[0] += $num - array_sum($arr);
?>

答案 2 :(得分:0)

function split($x, $n) 
{ 
    // If we cannot split the  
    // number into exactly 'N' parts 
    if($x < $n) 
        echo (-1); 

    // If x % n == 0 then the minimum  
    // difference is 0 and all  
    // numbers are x / n 
    else if ($x % $n == 0) 
    { 
        for($i = 0; $i < $n; $i++) 
        { 
            echo ($x / $n); 
            echo (" "); 
        } 
    } 

    else
    { 
        // upto n-(x % n) the values  
        // will be x / n  
        // after that the values  
        // will be x / n + 1 
        $zp = $n - ($x % $n); 
        $pp = $x / $n; 
        for ($i = 0; $i < $n; $i++) 
        { 
            if($i >= $zp) 
            { 
                echo (int)$pp + 1; 
                echo (" "); 
            } 
            else
            { 
                echo (int)$pp; 
                echo (" "); 
            } 
        } 
    } 
} 

// Driver code      
$x = 5; 
$n = 3; 
split( $x, $n);