package tr.gov.ulakbim.jDenetX.sampling; import weka.core.Instance; import weka.core.Randomizable; import java.util.Random; /** * Created by IntelliJ IDEA. * User: caglar * Date: Nov 22, 2010 * Time: 10:13:27 AM * To change this template use File | Settings | File Templates. */ public class ReservoirSampling implements Randomizable { private Reservoir mReservoir = null; private int mReservoirCapacity = 10000; private int mCurrentCursor = 0; private int Seed = 1; private Random Rndizer; public void setReservoirCapacity(int resSize) { mReservoirCapacity = resSize; mCurrentCursor = resSize; } private void initReservoir() { mReservoir = new Reservoir(mReservoirCapacity); } private void intRandomizer() { Rndizer = new Random(Seed); } public ReservoirSampling() { mReservoir = new Reservoir(); } public void addInstanceToReservoir(Instance inst) { int i = 0; if (mReservoir == null) { initReservoir(); } if (mReservoir.getCurrentResSize() < mReservoirCapacity) { mReservoir.addInstance(inst); } else { i = Rndizer.nextInt(mCurrentCursor); if (i <= mReservoirCapacity) { mReservoir.setInstance(i, inst); } mCurrentCursor++; } } public int getReservoirSize() { return mReservoirCapacity; } public void restart() { if (mReservoir != null) { mReservoir.cleanReservoir(); } int mCurrentCursor = 0; } @Override public void setSeed(int seed) { Seed = seed; } @Override public int getSeed() { return Seed; //To change body of implemented methods use File | Settings | File Templates. } }