以前自分がこちらで質問させていただいた内容で以下のアルゴリズムがありますね。
数をだいたい等しく分配するアルゴリズム
分割後の各 v_i, (i = 0, 1, ..., n - 1) を
v_i = (i + 1) * x // n - i * x // n
で求めます。// は切り捨て除算 (例: 5//2=2) です。
サンプルコード
Python
python
1x = 100
2n = 7
3
4chunks = []
5for i in range(n):
6 v = (i + 1) * x // n - i * x // n
7 chunks.append(v)
8
9print(chunks, sum(chunks)) # [14, 14, 14, 15, 14, 14, 15] 100
PHP
php
1$x = 100;
2$n = 7;
3$ret = [];
4
5for ($i = 0; $i < $n; $i++) {
6
7 $v = intdiv(($i + 1) * $x, $n) - intdiv($i * $x, $n);
8 array_push($ret, $v);
9}
10
11var_export($ret);
array (
0 => 14,
1 => 14,
2 => 14,
3 => 15,
4 => 14,
5 => 14,
6 => 15,
)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。