public void setParameters(int[] x, VectorI probability) { if (x.length != probability.size()) throw new InvalidArgumentError("The arguments must be the same size."); if (x.length == 0) throw new InvalidArgumentError("The arguments are empty."); setValid(false); _elements = new Vector<Element>(x.length); _index = new HashMap<Element, Element>(x.length); double scale = 1.0 / probability.sum(0); for (Iterator<VectorElementI> e = probability.elements(); e.hasNext(); ) { VectorElementI ve = e.next(); checkProbability(ve.getValue()); Element el = new Element(x[ve.getIndex()], ve.getValue() * scale); _elements.addElement(el); _index.put(el, el); } new QuickSort<Element>(_tmp).sort(_elements); setVariableBounds(0, x.length); setCdfBounds(0.0, 1.0); setValid(true); }