public PoissonSampler(double lambda) { limit = 1; gen = RandomUtils.getRandom(); pd = new PoissonDistribution(gen.getRandomGenerator(), lambda, PoissonDistribution.DEFAULT_EPSILON, PoissonDistribution.DEFAULT_MAX_ITERATIONS); }
@Override public Double sample() { return sample(gen.nextDouble()); }
public static RandomWrapper getRandom() { RandomWrapper random = new RandomWrapper(); if (testSeed) { random.resetToTestSeed(); } INSTANCES.put(random, Boolean.TRUE); return random; }
protected void shufflePreferences() { final RandomWrapper random = RandomUtils.getRandom(); /* Durstenfeld shuffle */ for (int currentPos = cachedUserIDs.length - 1; currentPos > 0; currentPos--) { final int swapPos = random.nextInt(currentPos + 1); swapCachedPreferences(currentPos, swapPos); } }
protected void initialize() { final RandomWrapper random = RandomUtils.getRandom(); userVectors = new double[dataModel.getNumUsers()][rank]; itemVectors = new double[dataModel.getNumItems()][rank]; final double globalAverage = getAveragePreference(); for (int userIndex = 0; userIndex < userVectors.length; userIndex++) { userVectors[userIndex][0] = globalAverage; userVectors[userIndex][USER_BIAS_INDEX] = 0; // will store user bias userVectors[userIndex][ITEM_BIAS_INDEX] = 1; // corresponding item feature contains item bias for (int feature = FEATURE_OFFSET; feature < rank; feature++) { userVectors[userIndex][feature] = random.nextGaussian() * NOISE; } } for (int itemIndex = 0; itemIndex < itemVectors.length; itemIndex++) { itemVectors[itemIndex][0] = 1; // corresponding user feature contains global average itemVectors[itemIndex][USER_BIAS_INDEX] = 1; // corresponding user feature contains user bias itemVectors[itemIndex][ITEM_BIAS_INDEX] = 0; // will store item bias for (int feature = FEATURE_OFFSET; feature < rank; feature++) { itemVectors[itemIndex][feature] = random.nextGaussian() * NOISE; } } }
public static Random getRandom(long seed) { RandomWrapper random = new RandomWrapper(seed); INSTANCES.put(random, Boolean.TRUE); return random; }
public static void useTestSeed() { testSeed = true; synchronized (INSTANCES) { for (RandomWrapper rng : INSTANCES.keySet()) { rng.resetToTestSeed(); } } }
void resetToTestSeed() { setSeed(STANDARD_SEED); }
public void shuffle() { unstagedPreferences = preferences.clone(); /* Durstenfeld shuffle */ for (int i = unstagedPreferences.length - 1; i > 0; i--) { final int rand = random.nextInt(i + 1); swapCachedPreferences(i, rand); } }
protected void initialize() throws TasteException { RandomWrapper random = RandomUtils.getRandom(); userVectors = new double[dataModel.getNumUsers()][rank]; itemVectors = new double[dataModel.getNumItems()][rank]; double globalAverage = getAveragePreference(); for (int userIndex = 0; userIndex < userVectors.length; userIndex++) { userVectors[userIndex][0] = globalAverage; userVectors[userIndex][USER_BIAS_INDEX] = 0; // will store user bias userVectors[userIndex][ITEM_BIAS_INDEX] = 1; // corresponding item feature contains item bias for (int feature = FEATURE_OFFSET; feature < rank; feature++) { userVectors[userIndex][feature] = random.nextGaussian() * NOISE; } } for (int itemIndex = 0; itemIndex < itemVectors.length; itemIndex++) { itemVectors[itemIndex][0] = 1; // corresponding user feature contains global average itemVectors[itemIndex][USER_BIAS_INDEX] = 1; // corresponding user feature contains user bias itemVectors[itemIndex][ITEM_BIAS_INDEX] = 0; // will store item bias for (int feature = FEATURE_OFFSET; feature < rank; feature++) { itemVectors[itemIndex][feature] = random.nextGaussian() * NOISE; } } }
public static Random getRandom(long seed) { RandomWrapper random = new RandomWrapper(seed); INSTANCES.put(random, Boolean.TRUE); return random; }
public static void useTestSeed() { testSeed = true; synchronized (INSTANCES) { for (RandomWrapper rng : INSTANCES.keySet()) { rng.resetToTestSeed(); } } }
void resetToTestSeed() { setSeed(STANDARD_SEED); }
private static void checkDistribution(Sampler<Double> pd, double alpha) { int[] count = new int[(int) Math.max(10, 5 * alpha)]; for (int i = 0; i < 10000; i++) { count[pd.sample().intValue()]++; } IntegerDistribution ref = new PoissonDistribution(RandomUtils.getRandom().getRandomGenerator(), alpha, PoissonDistribution.DEFAULT_EPSILON, PoissonDistribution.DEFAULT_MAX_ITERATIONS); for (int i = 0; i < count.length; i++) { assertEquals(ref.probability(i), count[i] / 10000.0, 2.0e-2); } } }
@Override public double apply(double value) { return rnd.nextDouble() - 0.5; } });
protected void shufflePreferences() { RandomWrapper random = RandomUtils.getRandom(); /* Durstenfeld shuffle */ for (int currentPos = cachedUserIDs.length - 1; currentPos > 0; currentPos--) { int swapPos = random.nextInt(currentPos + 1); swapCachedPreferences(currentPos, swapPos); } }
protected void initialize() throws TasteException { RandomWrapper random = RandomUtils.getRandom(); userVectors = new double[dataModel.getNumUsers()][rank]; itemVectors = new double[dataModel.getNumItems()][rank]; double globalAverage = getAveragePreference(); for (int userIndex = 0; userIndex < userVectors.length; userIndex++) { userVectors[userIndex][0] = globalAverage; userVectors[userIndex][USER_BIAS_INDEX] = 0; // will store user bias userVectors[userIndex][ITEM_BIAS_INDEX] = 1; // corresponding item feature contains item bias for (int feature = FEATURE_OFFSET; feature < rank; feature++) { userVectors[userIndex][feature] = random.nextGaussian() * NOISE; } } for (int itemIndex = 0; itemIndex < itemVectors.length; itemIndex++) { itemVectors[itemIndex][0] = 1; // corresponding user feature contains global average itemVectors[itemIndex][USER_BIAS_INDEX] = 1; // corresponding user feature contains user bias itemVectors[itemIndex][ITEM_BIAS_INDEX] = 0; // will store item bias for (int feature = FEATURE_OFFSET; feature < rank; feature++) { itemVectors[itemIndex][feature] = random.nextGaussian() * NOISE; } } }
public static RandomWrapper getRandom() { RandomWrapper random = new RandomWrapper(); if (testSeed) { random.resetToTestSeed(); } INSTANCES.put(random, Boolean.TRUE); return random; }
public static Random getRandom() { RandomWrapper random = new RandomWrapper(); INSTANCES.put(random, Boolean.TRUE); return random; }
@Test public void testSample() throws Exception { double[] data = new double[10001]; Sampler<Double> sampler = new Normal(); for (int i = 0; i < data.length; i++) { data[i] = sampler.sample(); } Arrays.sort(data); NormalDistribution reference = new NormalDistribution(RandomUtils.getRandom().getRandomGenerator(), 0, 1, NormalDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY); assertEquals("Median", reference.inverseCumulativeProbability(0.5), data[5000], 0.04); } }