public override IList <IRecommendedItem> Recommend(long userID, int howMany, IDRescorer rescorer) { IDataModel dataModel = GetDataModel(); int numItems = dataModel.GetNumItems(); List <IRecommendedItem> result = new List <IRecommendedItem>(howMany); while (result.Count < howMany) { var it = dataModel.GetItemIDs(); it.MoveNext(); var skipNum = random.nextInt(numItems); for (int i = 0; i < skipNum; i++) { if (!it.MoveNext()) { break; } // skip() ?? } long itemID = it.Current; if (dataModel.GetPreferenceValue(userID, itemID) == null) { result.Add(new GenericRecommendedItem(itemID, randomPref())); } } return(result); }
public FixedSizeSamplingIterator(int size, IEnumerator <T> source) { this.buf = new List <T>(size); int n = 0; RandomWrapper wrapper = RandomUtils.getRandom(); while (source.MoveNext()) { T current = source.Current; n++; if (this.buf.Count < size) { this.buf.Add(current); } else { int num2 = wrapper.nextInt(n); if (num2 < this.buf.Count) { this.buf[num2] = current; } } } this.enumerator = this.buf.GetEnumerator(); }
protected void shufflePreferences() { RandomWrapper wrapper = RandomUtils.getRandom(); for (int i = this.cachedUserIDs.Length - 1; i > 0; i--) { int posB = wrapper.nextInt(i + 1); this.swapCachedPreferences(i, posB); } }
public void shuffle() { unstagedPreferences = (IPreference[])preferences.Clone(); /// Durstenfeld shuffle for (int i = unstagedPreferences.Length - 1; i > 0; i--) { int rand = random.nextInt(i + 1); swapCachedPreferences(i, rand); } }
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); } }