マルチスレッドの効率(2)

タスクはランダムに選ばれたスレッドに投入されるとする。
2スレッドのときは簡単で、分配は2項分布で表され、それぞれのスレッドに投入されたタスクの数がa,bとすると、かかる時間はmax(a,b)となる。
だから、合計N個のタスクが投入されるときにかかる時間の平均は、

 E = \frac{1}{2^N}\sum_{k=0}^N{max(k,N-k)_NC_k}

だが、これを代数的に計算するのが難しい、というかわからない。
仕方なくプログラムを組む。
N = 5のとき、E = 3.4375となる。
効率が最大ならば2.5になる。
これに対する効率は、N/2/E = 8/11となる。
N = 2から20まで計算すると、

2 0.6666666666666666
3 0.6666666666666666
4 0.7272727272727273
5 0.7272727272727273
6 0.7619047619047619
7 0.7619047619047619
8 0.7852760736196319
9 0.7852760736196319
10 0.8025078369905956
11 0.8025078369905956
12 0.8159362549800797
13 0.8159362549800797
14 0.826806620912394
15 0.826806620912394
16 0.8358543988980435
17 0.8358543988980435
18 0.8435468715810068
19 0.8435468715810068
20 0.8501976758893793

Nを大きくしていくと、次第に1に近づくようである。