diff --git a/src/main/java/gr/james/sampling/package-info.java b/src/main/java/gr/james/sampling/package-info.java index 4244d11..f398f92 100644 --- a/src/main/java/gr/james/sampling/package-info.java +++ b/src/main/java/gr/james/sampling/package-info.java @@ -38,6 +38,12 @@ * the implementation table below. Implementations may also define certain restrictions on the values of {@code weight} * and violations will result in {@link gr.james.sampling.IllegalWeightException}. The weight ranges are also available * in the table. + *

Determinism

+ * Certain implementations rely on elements of the JRE that are not deterministic, for example + * {@link java.util.PriorityQueue} and {@link java.util.TreeSet}. The side effect of this is that weighted algorithms + * are not deterministic either because they typically rely on these data structures. This phenomenon is more prevalent + * in {@link gr.james.sampling.ChaoSampling}, where, in the presence of ties, there could be instances of different + * samples, even with the same seed and the same weighted elements. *

Precision

* Many implementations have an accumulating state which causes the precision of the algorithms to degrade as the stream * becomes bigger. An example might be a variable state which strictly increases or decreases as elements are read from