2012-04-28 39 views
3

我正在寻找在PHP中的有效的方式等于部分划分数除以一个整数相等。数字将始终为整数(不浮点数)。中X部分

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

Regards,

+0

我不知道很多PHP,但分割成若干等份,通常用'/'做.. 。 – 2012-04-28 18:24:53

+0

@larsmans对。但是因为结果可能是偶数,所以我很可能会遇到(例如:400/24 = 16.667,并且不能平均分配)。 – 2012-04-28 18:26:56

+0

@ Jean-PhilippeMurray:在这种情况下你想做什么? – 2012-04-28 18:34:24

回答

13

以下是您正在查找的算法;它均匀地分布整数NK细胞:

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 
+0

你去那里!我一度认为我可以做N/K操作的循环作为停止的条件。我刚刚在这里学到了一些东西,它的功能非常棒!谢谢 ! – 2012-04-28 18:48:49

+0

@让PhilippeMurray:请检查出Zombaya只是为了我的算法做出的修正;循环应该运行到'N mod K',而不是'N/K'。 – 2012-04-28 19:00:36

+0

你能否解释一下N模K和N/K最后的区别是什么?我似乎没有看到任何区别,而测试的两种解决方案... – 2012-04-28 19:21:44

3

试试这个代码

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

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

$arr[0] += $num - array_sum($arr); 
?> 
相关问题