データの大きなストリーム(メモリに収まらない)の任意の分位数を見つける必要があり、結果は再現可能である必要があります。つまり、同じストリームの場合、結果は同じである必要があります。私はこれに子馬を使用してきましたが、結果は再現できません。
これらの要件を満たす別のライブラリはありますか?
分位ビニングの結果をcoltで再現可能にするにはどうすればよいですか(1.2.0を使用しています)?乱数にランダムシードを使用しましたが、子馬が独自のランダム性を導入しているようです。わからない。
2つの異なる実行で次の結果が得られます。それらが再現可能である場合、結果は同じになります。
[0.0990242124295947, 0.20014652659912247, 0.2996443961549412]
[0.09994965676310263, 0.20079195488768953, 0.29986981667267676]
これを生成するコードは次のとおりです。
public class QuantileTest {
public static void main(String[] args) throws IOException, Exception {
QuantileBin1D qBins = new QuantileBin1D(false, Long.MAX_VALUE, 0.001, 0.0001, 64, null);
Random rand = new Random(0);
for (int i = 0; i < 1500000; i++) {
double num = rand.nextDouble();;
qBins.add(num);
}
DoubleArrayList qMarks = new DoubleArrayList(new double[] {0.1, 0.2, 0.3});
double[] xMarks = qBins.quantiles(qMarks).elements();
System.out.println(Arrays.toString(xMarks));
}
}