private void doNext() { int toSkip = geometricDistribution.sample(); delegate.skip(toSkip); if (delegate.hasNext()) { next = delegate.next(); } else { hasNext = false; } }
/** * @param set to choose from * @param random random number generator * @return element of the set chosen uniformly at random */ public static int randomFrom(FastIDSet set, RandomGenerator random) { int size = set.size(); Preconditions.checkArgument(size > 0, "Empty set"); LongPrimitiveIterator it = set.iterator(); it.skip(random.nextInt(size)); return (int) it.nextLong(); }
@Override public void skip(int n) { int toSkip = 0; for (int i = 0; i < n; i++) { toSkip += geometricDistribution.sample(); } delegate.skip(toSkip); if (delegate.hasNext()) { next = delegate.next(); } else { hasNext = false; } }
private void doNext() { int toSkip = geometricDistribution.sample(); delegate.skip(toSkip); if (delegate.hasNext()) { next = delegate.next(); } else { hasNext = false; } }
@Override public void skip(int n) { int toSkip = 0; for (int i = 0; i < n; i++) { toSkip += geometricDistribution.sample(); } delegate.skip(toSkip); if (delegate.hasNext()) { next = delegate.next(); } else { hasNext = false; } }
private void doNext() { int toSkip = geometricDistribution.sample(); delegate.skip(toSkip); if (delegate.hasNext()) { next = delegate.next(); } else { hasNext = false; } }
private void doNext() { int toSkip = geometricDistribution.sample(); delegate.skip(toSkip); if (delegate.hasNext()) { next = delegate.next(); } else { hasNext = false; } }
@Override public void skip(int n) { int toSkip = 0; for (int i = 0; i < n; i++) { toSkip += geometricDistribution.sample(); } delegate.skip(toSkip); if (delegate.hasNext()) { next = delegate.next(); } else { hasNext = false; } }
@Override public void skip(int n) { int toSkip = 0; for (int i = 0; i < n; i++) { toSkip += geometricDistribution.sample(); } delegate.skip(toSkip); if (delegate.hasNext()) { next = delegate.next(); } else { hasNext = false; } }
@Override public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer) throws TasteException { DataModel dataModel = getDataModel(); int numItems = dataModel.getNumItems(); List<RecommendedItem> result = Lists.newArrayListWithCapacity(howMany); while (result.size() < howMany) { LongPrimitiveIterator it = dataModel.getItemIDs(); it.skip(random.nextInt(numItems)); long itemID = it.next(); if (dataModel.getPreferenceValue(userID, itemID) == null) { result.add(new GenericRecommendedItem(itemID, randomPref())); } } return result; }
@Override public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer, boolean includeKnownItems) throws TasteException { DataModel dataModel = getDataModel(); int numItems = dataModel.getNumItems(); List<RecommendedItem> result = Lists.newArrayListWithCapacity(howMany); while (result.size() < howMany) { LongPrimitiveIterator it = dataModel.getItemIDs(); it.skip(random.nextInt(numItems)); long itemID = it.next(); if (includeKnownItems || dataModel.getPreferenceValue(userID, itemID) == null) { result.add(new GenericRecommendedItem(itemID, randomPref())); } } return result; }
@Override public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer, boolean includeKnownItems) throws TasteException { DataModel dataModel = getDataModel(); int numItems = dataModel.getNumItems(); List<RecommendedItem> result = new ArrayList<>(howMany); while (result.size() < howMany) { LongPrimitiveIterator it = dataModel.getItemIDs(); it.skip(random.nextInt(numItems)); long itemID = it.next(); if (includeKnownItems || dataModel.getPreferenceValue(userID, itemID) == null) { result.add(new GenericRecommendedItem(itemID, randomPref())); } } return result; }
@Test public void testPeekSkip() { LongPrimitiveIterator it = new LongPrimitiveArrayIterator(new long[] {3,2,1}); assertEquals(3, it.peek()); it.skip(2); assertEquals(1, it.nextLong()); assertFalse(it.hasNext()); }