[0,1) の範囲を指定して -10 から 10 の特定の値を生成するコードがあります。コードは -10 から 10 の値を取り、その確率に応じてリストに追加します。たとえば、-10 は値 0 に対応するためリストに 0 回入力され、10 は範囲内の 1 に対応するため (正規化として) 100 回入力されます。
コードは次のとおりです。
#!/usr/bin/env python
import math
import numpy as np
import matplotlib.pyplot as plt
pos = []
ceilingValue = 0.82
pValues = np.linspace(0.00, ceilingValue, num=100*ceilingValue)
for i in xrange(int(100*ceilingValue)):
p = pValues[i]
y = -11.63*math.log(-2.36279*(p - 1))
for j in xrange(i):
pos.append(y)
avg = np.average(pos)
std = np.std(pos)
hist, bins = np.histogram(pos,bins = 100)
width = 0.7*(bins[1]-bins[0])
center = (bins[:-1]+bins[1:])/2
plt.bar(center, hist, align = 'center', width = width)
plt.show()
問題は、ヒストグラムが正確なプロットを生成することですが、特定の値が傾向を崩すことです。たとえば、頻度カウントの約 30 エントリに対応する -5.88 は約 70 になります。Python は 2 つの値を見て、単純にそれらをまとめていると思いますが、修正方法がわかりません。しかし、それが何か間違ったことをしているヒストグラムだけであれば、それは問題ではありません。私はそれを本当に必要としません。そもそもリストが正しければ、リストが必要です。