私が実行しているいくつかのシミュレーションの一部として、いくつかのアルゴリズムの出力の累積分布を出力する必要があります。
tests = []
numtests = 100
for i in range(0, numtests):
#random
zeros = [0] * 1024
ones = [1] * 10
#ones = [randint(0,1023) for _ in range(0,10)]
input = zeros + ones
shuffle(input)
tests.append(HGBSA(input,10))
count = [x[0] for x in tests]
found = [x[1] for x in tests]
found.sort()
num = Counter(found)
freqs = [x for x in num.values()]
cumsum = [sum(item for item in freqs[0:rank+1]) for rank in range(len(freqs))]
normcumsum = [float(x)/numtests for x in cumsum]
print(freqs)
print(cumsum)
print(normcumsum)
print(sorted(num.keys()))
figure(0)
plt.plot(sorted(num.keys()), normcumsum)
plt.xlim(0,100)
plt.show()
上記のコードが示すように、ランダムに生成された入力でアルゴリズムを 100 回実行し、結果から累積分布を作成しています。
私は他のアルゴリズムでも同様のことをしたいと思っています.C ++では、(へのポインタ)メソッドを引数として取るテンプレートクラス/テンプレート関数を書くことができました。
Pythonで、必要な出力を生成する関数/クラスを作成する方法があるかどうかを尋ねたいのですが、関数を入力として受け取るので、コードをあちこちに複製することは避けます。