public T GetNext() { T val = _data[RandomManager.Range(0, _data.Count, _rngId)]; _data.Remove(val); return(val); }
public T GetNext() { T val = _currentBucket[RandomManager.Range(0, _currentBucket.Count, _rngId)]; _currentBucket.Remove(val); if (_currentBucket.Count == 0) { _currentBucket.AddRange(_data); } return(val); }
public static void Shuffle <T>(this IList <T> list, RngId rngId) { int num = list.Count; while (num > 1) { num--; int index = RandomManager.Range(0, num + 1, rngId); T value = list[index]; list[index] = list[num]; list[num] = value; } }
public static T RandomElement <T>(this T[] coll, RngId rngId) { int num = RandomManager.Range(0, coll.Length, rngId); return(coll[num]); }
public static T RandomElement <T>(this IList <T> coll, RngId rngId) { int index = RandomManager.Range(0, coll.Count, rngId); return(coll[index]); }
public static T RandomElement <T>(this IEnumerable <T> list, RngId rngId) { return(list.ElementAt(RandomManager.Range(0, list.Count(), rngId))); }